我有以下模式/匹配器: -
Pattern pattern = Pattern.compile(".*'G3[IJC]{1}'.*");
Matcher matcher = null;
boolean matchFound = false;
String values = "";
for (int i = 0; i < attributes.getLength(); i++)
{
values = attributes.getValue(i);
matcher = pattern.matcher(values);
if (matcher.matches())
{
matchFound = true;
break;
}
}
我试图在包含&#39; G3C&#39; G3I&#39;的XML文档中查找属性值。或者&#39; G3J&#39;但它不起作用。
我尝试了各种模式,例如'G3[C|I|J]?'
和其他变体。
如果我使用notepad ++,这些模式在Regex查找功能中起作用。
如果我运行一个包含一些随机文本的字符串的简单java类,其中包含任何这些值,它可以工作,但如果我把它放在这个XML文档中并使用SaxParser
读取它,那么,没有运气。
更新
由于某种原因无法发布示例XML。它没有出现在编辑器中。
虽然这样:
<SOMELEMENT = 'G3I' SOMETHINGELSE = 'G3J'>
我确实使用attributes.getValue(i)打印了所有信息,其中i被迭代并打印出我正在寻找的值,但正则表达式仍然找不到它们,但是当我以字符串形式传递它们时,正则表达式会找到值。
答案 0 :(得分:1)
我怀疑如果您在多个可能的匹配项上进行迭代,则应将if (matcher.matches())
替换为if (matcher.find())
或while (matcher.find())
。
Matcher.matches
将使用Pattern
从头到尾匹配整个输入。
在您的情况下,您可能希望在输入中找到Pattern
的一个或多个实例。