Возврат перекрывающихся регулярных выражений - PullRequest
8 голосов
/ 14 октября 2011

Существует ли регулярное выражение, которое будет захватывать все экземпляры выражения, независимо от того, перекрываются они или нет?

Например, в /abc/def/ghi, если я хочу захватить все строки, начинающиеся с /.Регулярное выражение (/.*) возвращает только всю строку, но я бы хотел, чтобы оно совпадало также с /def/ghi и /ghi.

1 Ответ

9 голосов
/ 14 октября 2011

Конечно, сопоставьте пустую строку и поместите упреждающий просмотр после нее, который захватывает /.* в группе захвата:

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

выведет:

/abc/def/ghi
/def/ghi
/ghi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...