带有匹配器的正则表达式仅返回第一个结果
Regex with matcher returning only the first result
您好,我在 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 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);
我的问题是我的正则表达式 returns 只是模式的第一次出现,即使我有一段时间 (matcher.find())..
Pattern regex = Pattern.compile("AttributeDesignator +AttributeId=\"(.+?)\" +.*?Category=\"(.+?)", Pattern.DOTALL);
使用非贪婪而不是贪婪量词。
您的问题是 *Category=\"(.+) 捕获了所有剩余的文本。
您必须将其关闭为 Category=\"(.+)\".
您好,我在 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 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);
我的问题是我的正则表达式 returns 只是模式的第一次出现,即使我有一段时间 (matcher.find())..
Pattern regex = Pattern.compile("AttributeDesignator +AttributeId=\"(.+?)\" +.*?Category=\"(.+?)", Pattern.DOTALL);
使用非贪婪而不是贪婪量词。
您的问题是 *Category=\"(.+) 捕获了所有剩余的文本。 您必须将其关闭为 Category=\"(.+)\".