我需要从这样的字符串中获取所有数字:
"156234 something 567345 another thing 45789 anything"
结果应该是具有以下数字的数字集合:
156234, 567345, 45789
我尝试了@"\d+"
,但它只会给我156234
。
此外,我不想要的整数前面会有一个ex:anything2345的文本。
答案 0 :(得分:9)
你的正则表达式一切正常,你只需要通过所有比赛。
Regex regex = new Regex(@"\d+");
foreach (Match match in regex.Matches("156234 something 567345 another thing 45789 anything"))
{
Console.WriteLine(match.Value);
}
答案 1 :(得分:6)
答案 2 :(得分:2)
如果2345不应该与你的修改后的样本字符串匹配(156234 567345另一个东西45789 anything2345),你可以使用Dima的解决方案,但使用正则表达式:
\b\d+\b
这可以确保数字被字边界包围。
答案 3 :(得分:0)
这是java中的。你实际上并不需要一个正则表达式..只是一个正常的替换所有应该为你做的伎俩! :例如:您可以剥离非数字,然后拆分并计算总和。
public static int getSumOfNumbers(String s) {
int sum = 0;
String x = s.replaceAll("\\D+", " ");
String[] a = x.split(" ");
for(int i = 0; i < a.length; i++)
sum += Integer.parseInt(a[i]);
System.out.println(x + " : and sum is : "+sum);
return sum;
}