我试图匹配以.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测试程序中尝试了相同的表达式,我得到了预期的结果,但在我的程序中没有得到结果。
发布于 2013-10-08 00:02:42
嗯,你的代码示例对我有用..。但“m”后面的{0,6}是没有意义的……为什么会有0到6米的?
这句话:
"(?<!form)\\.xsd$"这样做更有意义,但我也会更改循环以使用matches()方法,并相应地更改regex:
Pattern pattern = Pattern.compile(".+(?<!form)\\.xsd");
for (String file : files) {
Matcher matcher = pattern.matcher(file);
if(matcher.matches())
{
System.out.println("Found >>>> "+file);
}
}https://stackoverflow.com/questions/19236666
复制相似问题