需要有关在Java中使用正则表达式的帮助

时间:2010-05-21 00:50:33

标签: java regex

我试图匹配'@(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 个答案:

答案 0 :(得分:3)

此模式应该有效:\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));
}