后我有删除额外的空间
我正在尝试使用以下代码获得所有匹配:
String line = ("<option value="001">Values go here </option> <option value="002">More values in here</option>");
Pattern p = Pattern.compile("<option value="(.*)">(.*)</option> ");
Matcher finder = p.matcher(line);
while(finder.find())
{
System.out.println( finder.group(1));
System.out.println( finder.group(2));
}
但是我只得到最后一个或第一场比赛。(取决于空间在模式的末端还是在模式的开始)
我在做什么错?
使您的正则不盖迪(Lazy):
Pattern p = Pattern.compile("<option value="(.*?)">(.*?)</option>");
或更好地:
Pattern p = Pattern.compile("<option value="([^"]*)">([^<]*)</option>");
您的正则问题是使用.*
,它比您所需的文字更匹配。
ps:还请注意,</option>