你好我在使用带有Java的正则表达式时遇到了问题。
我正在尝试解析这个问题:
*whatever string*
<AttributeDesignator AttributeId="MyIDToParse"
DataType="http://www.w3.org/2001/XMLSchema#string"
Category="theCategoryIWantToParse"
MustBePresent="false"
/>
*whatever string ***that may contain the same regular expression again*** *
使用此代码(Pattern + Matcher)
Pattern regex = Pattern.compile("AttributeDesignator AttributeId=\"(.+?)\".*Category=\"(.+?)\"", Pattern.DOTALL);
Matcher matcher = regex.matcher(xml);
while (matcher.find()) {
String ID = matcher.group(1);
String Category = matcher.group(2);
我的问题是我的正则表达式只返回模式的第一次出现,即使我有一段时间(matcher.find())..
答案 0 :(得分:3)
Pattern regex = Pattern.compile("AttributeDesignator +AttributeId=\"(.+?)\" +.*?Category=\"(.+?)", Pattern.DOTALL);
使用非贪婪而不是贪婪的量词。
答案 1 :(得分:0)
您的问题是* Category = \“(。+)捕获所有剩余的文本。 您必须将其关闭为Category = \“(。+)\”。