3

我想在java中使用正则表达式在以下句子中找到重复模式:

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

我需要提取以下内容,甚至可能更多,所以我需要一个易于扩展的解决方案......

  1. 用户名derick256
  2. 特权derick 542
  3. 优质的derik542

这是我的代码...

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

但我只得到了username derick256. 谁能帮助我理解错误。

4

1 回答 1

4

更改if(m.find())while(m.find())

于 2012-04-27T09:42:00.610 回答