Java 正则表达式查找与给定模式不匹配的组?
我有一句话要说:Java 正则表达式查找与给定模式不匹配的组?,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有一句话要说: test=t1,test2=1,test3=t4 我想找到test2值不等于1的组或值, 我知道我可以通过使用regex很容易地找到它的值,比如+,test2=(.+?),.+。但它也给出了test2=1的位置,但我只想要test2值,如果它不等于1?您可以使用: 上面的模式将匹配test2仅当它后面没有1时才会匹配(单词边界\b用于不匹配像17这样的数字,但仅匹配1)这对您有效: String s = "test=t1,test2=2,test3=t4&qu
test=t1,test2=1,test3=t4
我想找到test2值不等于1的组或值,
我知道我可以通过使用regex很容易地找到它的值,比如+,test2=(.+?),.+
。但它也给出了test2=1的位置,但我只想要test2值,如果它不等于1?您可以使用:
上面的模式将匹配
test2
仅当它后面没有1
时才会匹配(单词边界\b
用于不匹配像17
这样的数字,但仅匹配1
)这对您有效:
String s = "test=t1,test2=2,test3=t4";
Pattern p = Pattern.compile("test2=(?!1,)(\\d+)");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group(1));
}
输入/输出:
“测试=t1,测试2=2,测试3=t4”2 “测试=t1,测试2=11,测试3=t4”
11 “测试=t1,测试2=1,测试3=t4”
无结果
它没有给我test2值。@user3717431,如果您想获取test2的数字:
“test2=(?!1\\b)(\\d+)”
或“test2=(?!1\\b)([^,]*)”
可能是我无法把问题说清楚,我只在test2值不等于1的情况下查看test2字符串的值,比如test2=1,那么它不应该返回任何值,但如果test2=12或test2=T1,它应该返回test2对应的值,比如12或1T1@user3717431,“test2=(?!1\\b)([^,]*)”
应该有效:请参见“是”,它有效唯一的问题是您提供的正则表达式是\\b,但您使用的是正则表达式测试仪\b这就是为什么它有效但不适用于我。谢谢。也许我不能把问题说清楚,我只是在寻找test2字符串的值,如果test2值不等于1,比如test2=1,那么它不应该返回任何值,但如果test2=12或test2=T1,它应该返回test2对应的值,比如12或1T1@user3717431-现在检查
String s = "test=t1,test2=2,test3=t4";
Pattern p = Pattern.compile("test2=(?!1,)(\\d+)");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group(1));
}