Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回重叠正则表达式_Java_Regex - Fatal编程技术网

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]: