Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式查找与给定模式不匹配的组?_Java_Regex_Pattern Matching - Fatal编程技术网

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));
    }