Java 正则表达式

yue214 2013-12-17 02:04:15
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));
}
}
}
...全文
1132 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2013-12-19
  • 打赏
  • 举报
回复
引用 13 楼 yue214 的回复:
[quote=引用 12 楼 oh_Maxy 的回复:] [quote=引用 11 楼 oh_Maxy 的回复:] Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+"); 把正则式里\\$的空格去掉试试
把正则式里\\$前面的空格去掉。。[/quote]没有任何空格,可能是敲错了,但是还是运行不了,如果您那通过了,麻烦您发一遍 我复制一下。。。。不知道有什么语法匹配错误。。。[/quote] 你的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)); 
         } 
yue214 2013-12-19
  • 打赏
  • 举报
回复
引用 12 楼 oh_Maxy 的回复:
[quote=引用 11 楼 oh_Maxy 的回复:] Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+"); 把正则式里\\$的空格去掉试试
把正则式里\\$前面的空格去掉。。[/quote]没有任何空格,可能是敲错了,但是还是运行不了,如果您那通过了,麻烦您发一遍 我复制一下。。。。不知道有什么语法匹配错误。。。
oh_Maxy 2013-12-19
  • 打赏
  • 举报
回复
引用 11 楼 oh_Maxy 的回复:
Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+"); 把正则式里\\$的空格去掉试试
把正则式里\\$前面的空格去掉。。
oh_Maxy 2013-12-19
  • 打赏
  • 举报
回复
Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+"); 把正则式里\\$的空格去掉试试
yue214 2013-12-19
  • 打赏
  • 举报
回复
引用 6 楼 rui888 的回复:
我靠。我还是不明白。
可能是以前写的意思不好,让大家误解了,在#9重新写了一下,可以的话,麻烦帮忙改改。。
yue214 2013-12-19
  • 打赏
  • 举报
回复
引用 5 楼 oh_Maxy 的回复:
[quote=引用 4 楼 yue214 的回复:] [quote=引用 2 楼 rui888 的回复:] 看不懂,是不是 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>这些字符串[/quote] 换句话说,对于任意的字符串,你需要的是 数字或者中文字符,是吧?还有其它特殊限制不?[/quote] 我想把字符串里 被逗号分隔每组串 都提取出来(但不需要去提取$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)); } 这个也不输出结果。。。。试了半天 现在对正则表达式 都无语了
享受软件世界 2013-12-18
  • 打赏
  • 举报
回复
感觉很深奥
花木兰1闪21A 2013-12-17
  • 打赏
  • 举报
回复
tony4geek 2013-12-17
  • 打赏
  • 举报
回复
我靠。我还是不明白。
oh_Maxy 2013-12-17
  • 打赏
  • 举报
回复
引用 4 楼 yue214 的回复:
[quote=引用 2 楼 rui888 的回复:] 看不懂,是不是 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>这些字符串[/quote] 换句话说,对于任意的字符串,你需要的是 数字或者中文字符,是吧?还有其它特殊限制不?
yue214 2013-12-17
  • 打赏
  • 举报
回复
引用 2 楼 rui888 的回复:
看不懂,是不是 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>这些字符串
yue214 2013-12-17
  • 打赏
  • 举报
回复
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>这些字符串
引用 1 楼 ghostkngiht 的回复:
"$GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>".split(",");//可以吗???
tony4geek 2013-12-17
  • 打赏
  • 举报
回复
看不懂,是不是 split(","); 。
ghostkngiht 2013-12-17
  • 打赏
  • 举报
回复
"$GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>".split(",");//可以吗???

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧