我有一行bla_bla**_**test**_1**023
,并希望提取_
和任何下划线之间的单词,后跟数字_digit
,在上面的示例中为test
。
我尝试了以下正则表达式,但不幸的是无法正常工作:
[^_ ]+(?=[ _\d])
-它使我在“ _digit”之前的所有单词不只是在_digit
答案 0 :(得分:1)
这应该为您工作。将Pattern
和Matcher
与环视一起使用。
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)
您要匹配除_以外的所有内容,直到到达_后跟一个数字为止。