开发者

Returning overlapping regular expressions

开发者 https://www.devze.com 2023-04-12 17:14 出处:网络
Is there a regular expression that will capture all instances of an expression, regardless of whether or not they overlap?

Is there a regular expression that will capture all instances of an expression, regardless of whether or not they overlap?

E.g. in /abc/def/ghi if I want to capture all strings beginning with开发者_如何学编程 /. The regex (/.*) only returns the entire string, but I'd want it to match on /def/ghi and /ghi as well.


Sure, match an empty string and place a look-ahead after it that captures /.* in a capturing group:

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

would print:

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

精彩评论

暂无评论...
验证码 换一张
取 消