Как узнать, какая часть регулярного выражения соответствует? - PullRequest
1 голос
/ 31 марта 2020

регулярное выражение = (i.*d.*n.*t.*)|(p.*r.*o.*f.*)|(u.*s.*r.*) соответствующая строка = profile

Теперь регулярное выражение будет соответствовать строке. Но я хочу знать, какая часть соответствует.

То есть, я хочу (стр. * Р. * О. е. ) в качестве вывода

Как я могу получить сделать это в Java?

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Вы можете проверить, какая группа соответствует:

Pattern p = Pattern.compile("(i.*d.*n.*t.*)|(p.*r.*o.*f.*)|(u.*s.*r.*)");
Matcher m = p.matcher("profile");
m.find();
for (int i = 1; i <= m.groupCount(); i++) {
    System.out.println(i + ": " + m.group(i));
}

Будет ли выводиться:

1: null
2: profile
3: null

Поскольку вторая строка не равна нулю, (p.*r.*o.*f.*) соответствует строке.

0 голосов
/ 31 марта 2020

В вашем случае кажется, что вы можете различить guish эти подшаблоны с первой буквой. Если первая буква совпадения - «р», то это будет ваш желаемый шаблон. Может быть, вы можете создать простую функцию для различения guish этих.

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