java正则表达式从字符串中提取 'only'个位数

标签 java regex

假设我有一个字符串。

String str = "Hello6 9World 2, Nic8e D7ay!";

Matcher match = Pattern.compile("\\d+").matcher(str);

上面的行会给我 6、9、2、8 和 7,这是完美的!

但是如果我的字符串更改为..

String str = "Hello69World 2, Nic8e D7ay!";

请注意,该字符串中 6 和 9 之间的空格已被删除。

如果我运行..

Matcher match = Pattern.compile("\\d+").matcher(str);

它会给我 69、2、8 和 7。

我的要求是仅提取个位数。这里,我需要的是 2, 8, 7,省略 69。

你能帮我改进我的正则表达式吗?谢谢!

最佳答案

对于每个数字,您必须检查它后面或前面是否没有 数字

你可以试试这个:

public static void main(String[] args) {
    String str = "Hello69World 2, Nic8e D7ay!";
    Pattern p = Pattern.compile("(?<!\\d)\\d(?!\\d)");
    Matcher m = p.matcher(str);
    while (m.find()) {
        System.out.println(m.group());
    }

    System.out.println("***********");

    str = "Hello6 9World 2, Nic8e D7ay!";
    m = p.matcher(str);
    while (m.find()) {
        System.out.println(m.group());
    }

}

操作:

2
8
7
***********
6
9
2
8
7

关于java正则表达式从字符串中提取 'only'个位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943931/

相关文章:

ruby-on-rails - 只有在逗号后没有空格的情况下才在逗号后添加空格?

java - Android Parse JSON 卡在获取任务上

java - HTTP 状态 500 - 在第 9 行处理 JSP page/index.jsp 时发生异常

java - 使用 wsdl 禁用和启用自动生成的 java 类的选项

javascript - 在替换中使用匹配

javascript - 分割字符串以创建 HTML 链接

java - JMH 微基准测试递归快速排序

java - junit3 创建测试配置文件 : mock vs real classes

regex - Perl 中捕获组的可选性和 "or"

正则表达式匹配不是特定数字的字符串?