当前位置:编程学习 > JAVA >>

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>这些字符串

引用 1 楼 ghostkngiht 的回复:
"$GPTAX,1,2013201,1,2019,你好!*hh<CR><LF>".split(",");//可以吗???
--------------------编程问答--------------------
引用 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>这些字符串 --------------------编程问答--------------------
引用 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>这些字符串

换句话说,对于任意的字符串,你需要的是 数字或者中文字符,是吧?还有其它特殊限制不? --------------------编程问答-------------------- 我靠。我还是不明白。 --------------------编程问答-------------------- --------------------编程问答--------------------
感觉很深奥 --------------------编程问答--------------------
引用 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>这些字符串

换句话说,对于任意的字符串,你需要的是 数字或者中文字符,是吧?还有其它特殊限制不?

我想把字符串里 被逗号分隔每组串  都提取出来(但不需要去提取$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)); 
 } 
这个也不输出结果。。。。试了半天
现在对正则表达式 都无语了 --------------------编程问答--------------------
引用 6 楼 rui888 的回复:
我靠。我还是不明白。
可能是以前写的意思不好,让大家误解了,在#9重新写了一下,可以的话,麻烦帮忙改改。。 --------------------编程问答-------------------- Pattern p = Pattern.compile("\\$[A-Z]{5},(\\d{7}),(\\d*),(\\d*),([0-7]),(\\d*),([1-4]),([EN]),(\\d*)\\*([0-9A-F]{2})\\s+"); 

把正则式里\\$的空格去掉试试 --------------------编程问答--------------------
引用 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+"); 

把正则式里\\$的空格去掉试试

把正则式里\\$前面的空格去掉。。 --------------------编程问答--------------------
引用 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+"); 

把正则式里\\$的空格去掉试试

把正则式里\\$前面的空格去掉。。
没有任何空格,可能是敲错了,但是还是运行不了,如果您那通过了,麻烦您发一遍 我复制一下。。。。不知道有什么语法匹配错误。。。 --------------------编程问答--------------------
引用 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+"); 

把正则式里\\$的空格去掉试试

把正则式里\\$前面的空格去掉。。
没有任何空格,可能是敲错了,但是还是运行不了,如果您那通过了,麻烦您发一遍 我复制一下。。。。不知道有什么语法匹配错误。。。

你的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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,