Java RegEx: просто получите часть группы соответствия - PullRequest
6 голосов
/ 10 ноября 2010

У меня есть регулярное выражение в Java:

Pattern pattern = Pattern.compile(<string>text</string><string>.+</string>);
Matcher matcher = pattern.matcher(ganzeDatei);
while (matcher.find()) {
    String string = matcher.group();
    ...

Это работает нормально, но вывод выглядит примерно так:

<string>text</string><string>Name</string>

Но я просто хочу это: Name

Как я могу это сделать?

Ответы [ 3 ]

19 голосов
/ 10 ноября 2010

Захват текста, который вы хотите вернуть, заключив его в скобки, поэтому в этом примере ваше регулярное выражение должно стать

<string>text</string><string>(.+)</string>

Затем вы можете получить доступ к тексту, который совпал между круглыми скобками с

matcher.group(1)

Метод no-arg group , который вы вызываете, возвращает всю часть входного текста, которая соответствует вашему шаблону, тогда как вы хотите просто подпоследовательность этого, которая соответствует группе захвата (скобка) .

5 голосов
/ 10 ноября 2010

Затем сделайте это:

Pattern pattern = Pattern.compile(<string>text</string><string>(.+)</string>);
        Matcher matcher = pattern.matcher(ganzeDatei);
        while (matcher.find()) {
            String string = matcher.group(1);
            ...

Ссылка:

0 голосов
/ 10 ноября 2010

Вы должны поместить текст, который хотите получить по group(), в скобки. Так что используйте:

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