问题描述
求一个这样的表达式,自己弄了好几个没匹配得来...例如:Stringstr="RS25421524425:详见内容.txt:V1,DS2522D144425:详见内容.txt:V1,........,AF55G824425:详见内容.txt:V1";基本就是就是xxxxxxx:xxxx:xx一个字符串最少一组(xxxxxxx:xxxx:xx),没上限,每组逗号隔开.每组中间是文件名(是文件名就行)没有限制,最后是V[1-9]
解决方案
解决方案二:
字符串规则的话,直接使用split分隔就可以了Stringstr="RS25421524425:详见内容.txt:V1,DS2522D144425:详见内容.txt:V1,........,AF55G824425:详见内容.txt:V1";//使用split按照","分隔Stringret[]=str.split(",");for(StringretStr:ret){System.out.println(retStr);}
正则的方式,没弄出来,不知道下面的正则思路哪里错了Patternp=Pattern.compile("(\w+:\S+:V[0-9]+,){1}");Matcherm=p.matcher(str);if(m.find()){System.out.println(m.group(1));}
知道的大侠指导一下
解决方案三:
引用1楼magi1201的回复:
字符串规则的话,直接使用split分隔就可以了Stringstr="RS25421524425:详见内容.txt:V1,DS2522D144425:详见内容.txt:V1,........,AF55G824425:详见内容.txt:V1";//使用split按照","分隔Stringret[]=str.split(",");for(StringretStr:ret){System.out.println(retStr);}正则的方式,没弄出来,不知道下面的正则思路哪里错了Patternp=Pattern.compile("(\w+:\S+:V[0-9]+,){1}");Matcherm=p.matcher(str);if(m.find()){System.out.println(m.group(1));}
知道的大侠指导一下
Patternp=Pattern.compile("(\w+:.*?:V[0-9]),?");Matcherm=p.matcher(str);while(m.find()){System.out.println(m.group(1));}
解决方案四:
楼主要的正则是要取什么用的,是取整个这种规则的字符串还是已经有这种规则的字符串,取文件名啊
解决方案五:
这条正则主要是用来判断这个字符串是不是符合这种格式存在,怕含有特殊字符