我需要一个给出以下字符串的正则表达式:“12.123.123 / 1234-11”,“12.123123123411”或“1123123 / 1234-11”。 我只能提取数字(12123123123411);
Pattern padrao = Pattern.compile("\d+");
Matcher matcher = padrao.matcher("12.123.123/1234-11");
while (matcher.find()) {
System.out.println(matcher.group());
}
//output:12,123,123,1234,11,
//I need: 121231234123411
任何人都可以帮助我吗?
答案 0 :(得分:9)
更好的方法是使用String#replaceAll(regex, replacement)
方法替换除数字之外的所有字符(如您所见,该方法需要使用正则表达式进行替换):
String str = "12.123.123/1234-11";
String digits = str.replaceAll("\\D", "");
\\D
匹配非数字字符。相当于[^0-9]
。
请注意,您需要转义Java正则表达式引擎上的\D
。
如果您对使用Matcher#group()
方法有限制,那么每次找到它们时都必须构建一个StringBuilder
实例,附加数字:
String str = "12.123.123/1234-11";
StringBuilder digits = new StringBuilder();
Matcher matcher = Pattern.compile("\\d+").matcher(str);
while (matcher.find()) {
digits.append(matcher.group());
}
System.out.println(digits);
答案 1 :(得分:2)
您可以通过replaceAll:
删除所有非数字字符String out = string.replaceAll("\\D+", "");