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取代。谢谢