如何把如下字符串:“所困多幅#112哭诉大892”中的数字892提取出来。
其中892不一定就是这几个数字,可以是任意0-9的数字,位数也不确定,但这个几个数字之间一定没有其他字符。前面的112不需要取出来。但是前面的112也是不确定的数字,位数也不确定,但是他的前面一定有个#。现在就是要怎么样才能把这个892这个位置上的数字取出来。
字符串举例:所困多幅#112哭诉大892
算幅#22锁诉大3222
锁定#4大330现在就是怎么把这样的字符串中的892,3222,330取出来。
其中892不一定就是这几个数字,可以是任意0-9的数字,位数也不确定,但这个几个数字之间一定没有其他字符。前面的112不需要取出来。但是前面的112也是不确定的数字,位数也不确定,但是他的前面一定有个#。现在就是要怎么样才能把这个892这个位置上的数字取出来。
字符串举例:所困多幅#112哭诉大892
算幅#22锁诉大3222
锁定#4大330现在就是怎么把这样的字符串中的892,3222,330取出来。
Pattern p = Pattern.compile("(?<!#|\\d)\\d+");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
如何把如下字符串:“120kV所困2Y多2X幅#112哭诉大892”中的数字892提取出来,也要把120kV取出来,也要把2Y,2X取出来,
其中892不一定就是这几个数字,可以是任意0-9的数字,位数也不确定,但这个几个数字之间一定没有其他字符。前面的112不需要取出来。但是前面的112也是不确定的数字,位数也不确定,但是他的前面一定有个#。现在就是要怎么样才能把这个892这个位置上的数字取出来。
字符串举例:120kV所困2Y多2X幅#112哭诉大892
112kv算3y幅sd2x#22锁诉大3222
300Kv锁32Y定#4大330现在就是怎么把这样的字符串中的120kV,2Y,2X,892,3222,330这些位置上的值取出来。
如何把如下字符串:“120kV所困2Y多2K幅#11哭诉大892”
其中需要取出的有:2Y,2K,892
120这个数字也是不确定的,但是后面一定有kv字符,但kv字符大小写不确定。
2Y这个值一定是两位,前面是0-9的数字,后面一定是大写Y
2K这个值一定是两位,前面是0-9的数字,后面一定是大写K
#11这个值前面不一定有#号,但是后面的数字一定是小于2位的
892这个值就是任意位数的数字,数字直接没有任何其他字符。
现在就是要取出来,2Y,2K,892这样的值,其他的都不要
String p="\\d(K|Y|\\d+)";
比如字符串:220kV算幅#22锁2K诉大322
最后结果是得到2K和322
比如字符串:20kV算幅#2锁22Y诉大1121
得到结果:22Y 和322
>得到结果:22Y 和322
-------
矛盾>#11这个值前面不一定有#号,但是后面的数字一定是小于2位的
>892这个值就是任意位数的数字,数字直接没有任何其他字符。
--------
矛盾
----------
上面的字符串你想提取哪些?
String pat = "(\\d+[kK][vV]|\\d[KY]|(?<!#)\\d{2,})";
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
---------------------------------
就能想到这里了,你再把带kv的去掉.期待好的解决方法.
//+换成{1,n}可将ky前面数字限制为n位以内。若只要ky大写将前面两处:[yY]和[Kk]改为Y和K即可
String str = "厄220kV算2Kv幅2K啊22K#22抗22击2Y非333典2y声22Y卡锁诉2大32";
Pattern p = Pattern.compile("(?<!#|\\d)(?:\\d+(?:[yY]|[Kk](?![vV])))|\\d{3,}(?![kK][vV])");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
如字符串:120kV所困2Y幅#1139哭诉大191
用你这个表达式,得到的结果是2Y,1139,191
现在想要的结果是2Y,191
也就是,如果有数字前面有#号,那么也不要取这个数字
Pattern p = Pattern.compile("(?<!#|\\d)((?:\\d+(?:[yY]|[Kk](?![vV])))|\\d{3,}(?![kK][vV]))");
Pattern p = Pattern.compile("(?<!#|\\d)(?:(?:\\d+(?:[yY]|[Kk](?![vV])))|\\d{3,}(?![kK][vV]))");