我想在java中使用reqular表达式在下一句中找到重复模式:
username|s:5:"derick256";privilege|s:5:"derick542";premium|s:5:"derik542";
我需要提取以下内容,可能还有更多,所以我需要一个易于扩展的解决方案......
derick256
derick 542
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
。任何人都可以帮我理解错误。
答案 0 :(得分:4)
将if(m.find())
更改为while(m.find())
。