2010-05-21 128 views
1
正则表达式

我试图像匹配模式“@(A-ZA-Z0-9)+“,但不喜欢‘ABC @测试’。需要帮助的在Java中使用

所以这是我的尝试:?

Pattern MY_PATTERN 
    = Pattern.compile("\\[email protected](\\w)+\\s?"); 
String data = "[email protected] #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 我怎样才能解决我的问题,谢谢

回答

3

这种模式应该工作:\B(@\w+)

\B扫描前面的非字边界。 \w+已经排除了尾部空格。此外,我还移动了括号,以便@+进入正确的组。您最好使用m.group(1)来获得它。

这里的改写:

Pattern pattern = Pattern.compile("\\B(@\\w+)"); 
String data = "[email protected] #gogasig @jytaz @tibuage"; 
Matcher m = pattern.matcher(data); 
while (m.find()) { 
    System.out.println(" group " + m.group(1)); 
}