编程语言
首页 > 编程语言> > java – 重叠正则表达式

java – 重叠正则表达式

作者:互联网

我发现了一个类似的问题here.但是我没有得到它的工作:

我有一个像“my_token_string”这样的字符串,需要一个正则表达式来返回标记“my_”,“_ token_”和“_string”.

请注意,我无法更改java代码,因为它是另一个软件的一部分.我唯一能做的就是指定要捕获的模式和组:-)

这是我测试过的:

String p = "(?=(_[^_]*_?))";
int group = 1;
String test = "my_token_string";

Matcher m = Pattern.compile(p).matcher(test);
while (m.find()) {
    System.out.println(m.group(group));
}

但是当然这只返回令牌“_token_”和“_string”.

解决方法:

您可以尝试使用“(?=((^ | _).?(_ | $)))”.由于组号使用1.

它将令牌以_或输入开头(^)开头,并以_或输入结束($)结束.代替 . ?你可以使用[^ _],但我更喜欢这个版本.

标签:java,regex,regex-lookarounds
来源: https://codeday.me/bug/20190613/1229725.html