返回重叠的正则表达式

时间:2011-10-13 20:39:20

标签: java regex

是否有正则表达式捕获表达式的所有实例,无论它们是否重叠?

E.g。在/abc/def/ghi中,如果我想捕获以/开头的所有字符串。正则表达式(/.*)仅返回整个字符串,但我希望它在/def/ghi/ghi上匹配。

1 个答案:

答案 0 :(得分:9)

当然,匹配一个空字符串并在捕获组中捕获/.*之后放置一个预测:

Matcher m = Pattern.compile("(?=(/.*))").matcher("/abc/def/ghi");
while(m.find()) {
  System.out.println(m.group(1));
}

会打印:

/abc/def/ghi
/def/ghi
/ghi