我正在尝试匹配以.xsd结尾但不在form.xsd中的字符串列表我使用以下regEx:
ArrayList<String> files = new ArrayList<String>();
files.add("/abadc/asdd/wieur/file1.form.xsd");
files.add("/abadc/asdd/wieur/file2.xsd");
Pattern pattern = Pattern.compile("(?<!form{0,6})\\.xsd$");
for (String file : files) {
Matcher matcher = pattern.matcher(file);
if(matcher.find())
{
System.out.println("Found >>>> "+file);
}
}
我希望打印出file2,但我没有得到任何结果。我在这里做错了吗?我在一个在线java regEx测试器中尝试相同的表达式,我得到了预期的结果,但我没有在我的程序中得到结果。
答案 0 :(得分:1)
嗯,你的代码示例对我有用......但是'm'之后的{0,6}没有意义.....为什么会有0到6'm?
表达式:
"(?<!form)\\.xsd$"
会更有意义,但是我也会改变你的循环以使用matches()方法,并相应地更改正则表达式:
Pattern pattern = Pattern.compile(".+(?<!form)\\.xsd");
for (String file : files) {
Matcher matcher = pattern.matcher(file);
if(matcher.matches())
{
System.out.println("Found >>>> "+file);
}
}