正则表达式在两个解脱词之间取得成功

时间:2018-10-26 17:41:46

标签: java regex

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

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

我尝试了以下正则表达式,但不幸的是无法正常工作: [^_ ]+(?=[ _\d])-它使我在“ _digit”之前的所有单词不只是在_digit

之前的单词

2 个答案:

答案 0 :(得分:1)

这应该为您工作。将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());
    }


}

O / P:

  

测试

答案 1 :(得分:0)

 [^_]*(?=_\d)

您要匹配除_以外的所有内容,直到到达_后跟一个数字为止。