2012-04-27 3 views
3

Je veux trouver des motifs répétitifs dans la phrase suivante en utilisant des expressions reqular en java:Trouver des motifs répétitifs dans une phrase en utilisant des expressions reqular en java

username|s:5:"derick256";privilege|s:5:"derick542";premium|s:5:"derik542";

je dois extraire ce qui suit, et potentiellement plus, donc je besoin d'une solution qui est facilement extensible ...

  1. nom d'utilisateur derick256
  2. privilège derick 542
  3. prime derik542

Ceci est mon code ...

String re1="((?:[a-z][a-z0-9_]*))"; // Variable Name 1 
String re2=".*?"; // Non-greedy match on filler 
String re3="(?:[a-z][a-z0-9_]*)"; // Uninteresting: var 
String re4=".*?"; // Non-greedy match on filler 
String re5="((?:[a-z][a-z0-9_]*))"; // Variable Name 2 

Pattern p = Pattern.compile(re1+re2+re3+re4+re5,Pattern.CASE_INSENSITIVE | Pattern.DOTALL); 
Matcher m = p.matcher(strLine); 
if (m.find()){ 
    String word1=m.group(1); 
    String word2=m.group(2); 
    System.out.print("("+word1.toString()+")"+"("+word2.toString()+")"+"\n"); 
} 

Mais je ne suis username derick256. Quelqu'un pourrait-il m'aider à comprendre l'erreur?

+1

L'absence du caractère «c» est-elle intentionnelle dans «derik542»? –

+0

oui .. je voulais dire qu'il peut être n'importe quel autre mot –

Répondre

4

Remplacez if(m.find()) par while(m.find()).

Questions connexes