Java Regex Grouping Проблема - PullRequest
       4

Java Regex Grouping Проблема

1 голос
/ 13 апреля 2009

Я пытаюсь выяснить проблему с регулярными выражениями Java, которая у меня возникла. Это 1.6, но я не думаю, что это имеет значение. Во всяком случае ...

У меня будут некоторые входные данные, подобные следующим ...

"Blah yadda yidda 44-Barack Obama, this that the other"

или

"Something here, there 22-Hyphenated-example.  Hi there folks"

По сути, я хочу извлечь все после числа до конечной пунктуации. В двух примерах ввода я хочу извлечь ...

"Barack Obama"

и

"Hyphenated-example"

Я не могу понять шаблон, который мне нужен. Самое близкое, что я могу получить, это ...

"[0-9]{1,2}-([A-Z -]*\\b*)"

что, однако, дает мне ...

"44-Barack Obama"

Мой код ...

Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Blah yadda yidda 44-Barack Obama, this that the other");
if (matcher.find())
    // This gives me "44-Barack Obama" but I want "Barack Obama".
    System.out.println(matcher.group());

Интересно, что я использую плагин QuickREx Eclipse для проверки этого шаблона, и он возвращает правильное значение. Тем не менее, выполнение приведенного выше кода не.

Есть идеи?

1 Ответ

4 голосов
/ 13 апреля 2009

Используйте результат matcher.group(1), а не matcher.group(). Вторая форма возвращает все, что соответствовало предыдущему методу matches или find. Первая форма используется для доступа к отдельным группам захвата в регулярном выражении.

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