Нужна помощь с использованием регулярных выражений в Java - PullRequest
1 голос
/ 21 мая 2010

Я пытаюсь сопоставить шаблон как '@ (a-zA-Z0-9) + ", но не как' abc@test'.

Вот что я попробовал:

Pattern MY_PATTERN
    = Pattern.compile("\\s@(\\w)+\\s?"); 
String data = "abc@gere.com #gogasig @jytaz @tibuage";
    Matcher m = MY_PATTERN.matcher(data);
StringBuffer sb = new StringBuffer();
boolean result = m.find(); 
while(result) {
    System.out.println (" group " + m.group());
    result = m.find();
}

Но я вижу только @jytaz, но не @tibuage. Как я могу исправить мою проблему? Спасибо.

1 Ответ

3 голосов
/ 21 мая 2010

Этот шаблон должен работать: \B(@\w+)

\B сканирует границы без слов в передней части. \w+ уже исключает завершающий пробел. Кроме того, я также сместил скобки, чтобы @ и + входили в правильную группу. Желательно использовать m.group(1), чтобы получить его.

Вот переписать:

Pattern pattern = Pattern.compile("\\B(@\\w+)");
String data = "abc@gere.com #gogasig @jytaz @tibuage";
Matcher m = pattern.matcher(data);
while (m.find()) {
    System.out.println(" group " + m.group(1));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...