2010-05-21 3 views
1

Je suis en train de faire correspondre comme modèle « @ (a-zA-Z0-9) +" mais pas comme « abc @ test ».Besoin d'aide pour l'utilisation expression régulière en Java

Voilà donc ce que j'ai essayé :.?

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(); 
} 

mais je ne peux voir '@jytaz', mais pas @tibuage Comment puis-je résoudre mon problème

Répondre

3

Merci Ce modèle devrait fonctionner. \B(@\w+)

Le \B scans pour la limite de non-mot à l'avant. Le \w+ exclut déjà l'espace de fin. Plus loin j'ai également décalé les parenthèses de sorte que les @ et + viennent dans le groupe correct. Vous devriez de préférence utiliser m.group(1) pour l'obtenir.

Voici le rewrite:

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)); 
}