Java 正则表达式
import java.util.*;public static void main(String[] args){
String str = new String($GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>);
//hh是校验和,<CR><LF>是回车,换行,我想把字符串里 被逗号分隔每组串 都提取出来(下边的没有去提取$GPTAX *hh <CR><LF> ),但是却运行不出来,代码如下 不知道是不是正则表达式写错了?怎么修改?
Pattern p = Pattern.compile("[url=file://$[a-z]%7b5%7d,([0-5/]\\$[A-Z]{5},([0-5[/url]])(\\d{1,7}),([0-1]),(.{4,}),(.+)\\*(.{2})\\S+");
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group(1)+m.group(2)+m.group(3)+m.group(4)+m.group(5));
}
}
}
--------------------编程问答-------------------- "$GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>".split(",");//可以吗??? --------------------编程问答-------------------- 看不懂,是不是 split(","); 。 --------------------编程问答--------------------
String str = new String("$GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>");
Pattern p = Pattern.compile("[\\$[A-Z]{5},([0-5[/url]])(\\d{1,7}),([0-1]),(.{4,}),(.+)\\*(.{2})\\S+");
之前写的有些问题,在这里更正一下,
不需要去提取$GPTAX *hh <CR><LF>这些字符串
--------------------编程问答--------------------
String str = new String("$GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>");
Pattern p = Pattern.compile("[\\$[A-Z]{5},([0-5[/url]])(\\d{1,7}),([0-1]),(.{4,}),(.+)\\*(.{2})\\S+");
工作电脑和上网的分开,所以手动敲代码的的时候出了点问题,在这里更正一下,
不需要去提取$GPTAX *hh <CR><LF>这些字符串 --------------------编程问答--------------------
换句话说,对于任意的字符串,你需要的是 数字或者中文字符,是吧?还有其它特殊限制不? --------------------编程问答-------------------- 我靠。我还是不明白。 --------------------编程问答-------------------- --------------------编程问答--------------------
感觉很深奥 --------------------编程问答--------------------
看不懂,是不是 split(","); 。
String str = new String("$GPTAX,1,2013201,1,2019,你好!*hh"+"\n");
//hh是校验和,我想把字符串里 被逗号分隔每组串 都提取出来(但不需要去提取$GPTAX *hh \n),可是却运行不出来,代码如下 不知道是不是正则表达式写错了?怎么修改?
Pattern p = Pattern.compile("\\$[A-Z]{5},([0-5]),(\\d{1,7}),([0-1]),(.{4,}),(.+)\\*(.{2})\\s+");
工作电脑和上网的分开,所以手动敲代码的的时候出了点问题,在这里更正一下,
不需要去提取$GPTAX *hh <CR><LF>这些字符串
换句话说,对于任意的字符串,你需要的是 数字或者中文字符,是吧?还有其它特殊限制不?
我想把字符串里 被逗号分隔每组串 都提取出来(但不需要去提取$GPTAX *hh \n),也就是你说的意思吧
后来遇上新问题了:
String str = "$GPICI,1234567,2013201,01891,2,10,1,E,0*F3"+"\n";
Pattern p = Pattern.compile(" \\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+");
Matcher m = pattern.matcher(str);
if(m.find()){
System.out.println(m.group(5));
}
这个也不输出结果。。。。试了半天
现在对正则表达式 都无语了 --------------------编程问答--------------------
我靠。我还是不明白。
把正则式里\\$的空格去掉试试 --------------------编程问答--------------------
Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+");
把正则式里\\$的空格去掉试试
把正则式里\\$前面的空格去掉。。 --------------------编程问答--------------------
Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+");
把正则式里\\$的空格去掉试试
把正则式里\\$前面的空格去掉。。
没有任何空格,可能是敲错了,但是还是运行不了,如果您那通过了,麻烦您发一遍 我复制一下。。。。不知道有什么语法匹配错误。。。
Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+");
把正则式里\\$的空格去掉试试
把正则式里\\$前面的空格去掉。。
你的pattern改成p了:
String str = "$GPICI,1234567,2013201,01891,2,10,1,E,0*F3"+"\n";
Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+");
Matcher m = p.matcher(str);
if(m.find()){
System.out.println(m.group(5));
}
补充:Java , Java SE