使用java中的正则表达式在句子中查找重复模式

时间:2012-04-27 09:39:35

标签: java regex

我想在java中使用reqular表达式在下一句中找到重复模式:

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

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

  1. 用户名derick256
  2. 特权derick 542
  3. premium derik542
  4. 这是我的代码......

    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。任何人都可以帮我理解错误。

1 个答案:

答案 0 :(得分:4)

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