java - 正则表达式获取两个下划线之间的单词

标签 java regex

我有一行像 bla_bla**_**test**_1**023

并且想要提取_和任何下划线之间的单词,后跟数字_digit,在上面的示例中是test

我尝试了以下正则表达式,但不幸的是不起作用: [^_ ]+(?=[ _\d]) - 它获取“_digit”之前的所有单词,而不仅仅是 _digit

之前的单词

最佳答案

这应该适合你。将PatternMatcher环视结合使用。

public static void main(String[] args) {
    String word= "bla_bla_test_1023";
    Pattern p = Pattern.compile("(?<=_)([^_]+)(?=_\\d+)");
    Matcher m = p.matcher(word);
    while (m.find()) {
        System.out.println(m.group());
    }


}

操作:

test

关于java - 正则表达式获取两个下划线之间的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53013824/

相关文章:

java - 捕获所有可能的路径参数 jax-rs regex

java - 在Java中使用reduce和prallelstream时出现奇怪的结果

android - 带正则表达式的过滤器适配器

javascript - int 和 float 的正则表达式都不能正常工作

javascript - 仅当行中存在 13SL 时才匹配

JavaScript 正则表达式给出误报

JavaScript、JSP 和 JSON 不适用于 POST

java.security.UnrecoverableKeyException : no match

java - 覆盖方法,为什么我不能引用新的自己的方法?

javascript - 替换两个项目之间的字符串