2010-05-21 121 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)); 
}