字符串如下:
"aaa123bbb" "aaa234bbb" "aaa567bbb" "345" "267"
我想取到字符串里的数字:123,234,567,345,267
数字前后的字符串不会变,但是可能没有,请问正则表达式咋写?
我写的正则表达式如下:
(aaa)?(.*?)(bbb)?
这种情况会把aaa和bbb也取出来,实际我的字符串比这个长很多,如果把aaa和bbb都取出来,会增大我的代码量,怎么样才能只取数字?
我试过aaa和bbb外面不加括号,就不会取出aaa和bbb,但是对没有字符串的情况(比如345和267)就不适用了
------解决方案--------------------
就是说,你就是想从一个字符串中取出连续的数字的部份喽:
public static void main(String[] args) {
String ss="aa123bb";
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher(ss);
while(m.find()){
System.out.println(m.group());
}
}
这样应该可以达到你想要的效果吧!
------解决方案--------------------
public class Aloha {
public static void main(String[] args) {
String[] strs = {"aaa123bbb", "aaa234bbb", "aaa567bbb", "345", "267"};
String pattern = ".*?(\\d+).*";
for (String str : strs) {
System.out.println(str.replaceAll(pattern, "$1"));
}
}
}