gpt4 book ai didi

java - Java 中的正则表达式反向 LookBehind

转载 作者:行者123 更新时间:2023-12-01 14:02:36 25 4
gpt4 key购买 nike

我正在尝试匹配以 .xsd 结尾但不以 form.xsd 结尾的字符串列表,我使用以下正则表达式:

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 测试器中尝试相同的表达式,得到了预期的结果,但在我的程序中没有得到结果。

最佳答案

嗯,你的代码示例对我有用......但是“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);
}
}

关于java - Java 中的正则表达式反向 LookBehind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com