Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Matcher java没有';不起作用,但正则表达式似乎很好_Java_Regex - Fatal编程技术网

Matcher java没有';不起作用,但正则表达式似乎很好

Matcher java没有';不起作用,但正则表达式似乎很好,java,regex,Java,Regex,我想在字符串中找到正则表达式的实例。 但它不起作用。 我的正则表达式似乎很好 我的字符串是这样的: LB,32736,0,T,NRJ.POMPES_BACHE.PUISSANCE_ELEC_INST,20190811T080000.000Z,20190811T194400.000Z TR,NRJ.POMPES_BACHE.PUISSANCE_ELEC_INST,0,65535,1,1,,0,0,2 20190811T080000.000Z,0.00800000037997961,192 2019

我想在字符串中找到正则表达式的实例。 但它不起作用。 我的正则表达式似乎很好

我的字符串是这样的:

LB,32736,0,T,NRJ.POMPES_BACHE.PUISSANCE_ELEC_INST,20190811T080000.000Z,20190811T194400.000Z
TR,NRJ.POMPES_BACHE.PUISSANCE_ELEC_INST,0,65535,1,1,,0,0,2
20190811T080000.000Z,0.00800000037997961,192
20190811T080100.000Z,0.008999999612569809,192
20190811T080200.000Z,0.008999999612569809,192
LB,32734,0,T,NRJ.POMPES_BACHE.PUISSANCE_ELEC_CPT,20190811T080000.000Z,20190811T201200.000Z
TR,NRJ.POMPES_BACHE.PUISSANCE_ELEC_CPT,0,65535,1,1,,0,0,2
20190811T080000.000Z,0.6743068099021912,192
20190811T080100.000Z,0.6744459867477417,192
20190811T080200.000Z,0.6745882630348206,192
20190811T080300.000Z,0.6747232675552368,192
20190811T080400.000Z,0.6748600006103516,192
20190811T080500.000Z,0.6749916672706604,192
20190811T080600.000Z,0.6751362681388855,192
我只想匹配具有这种格式的行

20190811T080000.000Z,0.00800000037997961,192
所以我试过这个正则表达式

^([^,]*,){2}[^,]*$
并在此网站上工作:

但是,当我在Java上实现它时,它不起作用

Pattern pattern = Pattern.compile("^([^,]*,){2}[^,]*$");
                Matcher matcher = pattern.matcher(content);
                if ( matcher.find()){
                    System.out.println(matcher.group());
                }
您可以在此处验证:

有人解释吗?。。
感谢您在Java正则表达式中缺少多行模式,您可以使用:

Pattern pattern = Pattern.compile("^([^,]*,){2}[^,]*$", Pattern.MULTILINE);
或者使用内联:

Pattern pattern = Pattern.compile("(?m)^([^,]*,){2}[^,]*$");

您在if和while之间进行了更改,您想要1个匹配项还是所有匹配项

Pattern pattern = Pattern.compile("^([^,]*,){2}[^,]*$");
Matcher matcher = pattern.matcher(content);
while ( matcher.find()){
    System.out.println(matcher.group());
}

当匹配器继续匹配内容字符串中的正则表达式时,此版本将继续循环。

您发布的正则表达式与正则表达式101示例不匹配,因此我完全相信您有问题……是的,这是修改,但问题不在这里。。我认为regex101没有java风格。大多数可能是相同的,但不是所有的(这么多的Déjávu)是的,我的测试中使用了if,但在我的代码中它被while取代。谢谢