java - 正则表达式匹配由空格分隔的数字字符串中的数字

标签 java regex

我有一个字符串,例如:

String s = " 10 5 15 55 5 ";

我正在尝试使用 regExp 获取数字的重复次数(在本例中为 5),所以我的方法如下:

long repetitions = s.split(" 5").length -1;

但这不起作用,它也匹配 55。

如果我在数字两侧使用空格,例如:

String s=" 10 10 15 5 ";
long repetitions = s.split(" 10 ").length -1;

它不起作用,它只计算 10 个实例中的一个(我有两个)。

所以我的问题是哪个 regExp 能够正确计算这两种情况?

最佳答案

您可以将模式匹配与使用 word-boundaries 的正则表达式 '\b5\b' 结合使用。查找不属于“其他内容的一部分”的 5:

String s = " 10 5 15 55 5 ";
Pattern p = Pattern.compile("(\\b5\\b)");
Matcher m = p.matcher(s);
int countMatcher = 0;
while (m.find()) { // find the next match
    m.group();
    countMatcher++; // count it
}
System.out.println("Number of matches: " + countMatcher);

输出

Number of matches: 2

您可以对 10 等执行相同的操作。

关于java - 正则表达式匹配由空格分隔的数字字符串中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32982567/

相关文章:

python - 正则表达式用于嵌入其余匹配中的多字符串?

javascript正则表达式在char一次拆分匹配,而不是多个

java - 删除转义字符

javascript - 允许字母数字、空格和一些特殊字符的正则表达式

java - getResource 在一台服务器上返回 null,但在另一台服务器上则不返回 null

java jama数组问题

java - 如何使用 Wi-fi 从 Android 手机连接到我的 PC 上的 SQLite 数据库?

java - Spring引导 Autowiring 类不会在常规类中实例化

java - Eclipse 通知的 android 中未处理的异常

regex - 转换任何语言的数字字符串,同时保留前导零