Java 返回重叠正则表达式
是否有一个正则表达式可以捕获表达式的所有实例,而不管它们是否重叠Java 返回重叠正则表达式,java,regex,Java,Regex,是否有一个正则表达式可以捕获表达式的所有实例,而不管它们是否重叠 例如,在/abc/def/ghi中,如果我想捕获以/开头的所有字符串。正则表达式(/.*)只返回整个字符串,但我希望它与/def/ghi和/ghi匹配。当然,匹配一个空字符串,并在捕获组中捕获/.*的字符串后放置一个前瞻: Matcher m = Pattern.compile("(?=(/.*))").matcher("/abc/def/ghi"); while(m.find()) { System.out.println(
例如,在
/abc/def/ghi
中,如果我想捕获以/
开头的所有字符串。正则表达式(/.*)
只返回整个字符串,但我希望它与/def/ghi
和/ghi
匹配。当然,匹配一个空字符串,并在捕获组中捕获/.*
的字符串后放置一个前瞻:
Matcher m = Pattern.compile("(?=(/.*))").matcher("/abc/def/ghi");
while(m.find()) {
System.out.println(m.group(1));
}
将打印:
/abc/def/ghi
/def/ghi
/ghi
有趣的话题。可以肯定的是,只匹配
/abc
、/def
和/ghi
不是你想要的,是吗?@Arjan不,不是。那太容易了!我发现(?=(/.*)
确实起到了作用,另请参见[重叠匹配][1][1]: