负向前瞻性正则表达式与某种模式不匹配

时间:2017-04-17 18:42:48

标签: java regex

如果字符串中包含四个或更多点,我试图不匹配。这是我现在的正则表达式。

^(\s*(CODE)\s?([0-9]{1,2}))(.(?!\.\.\.\.*))*$

所以,我的正则表达式应该匹配

CODE 7 Newton 

但它应该匹配

CODE 7 Newton ....................

我做错了什么?即使是前方的负面看,它也匹配所有的点!

1 个答案:

答案 0 :(得分:2)

您可以使用负前瞻来使用此reegx:

^CODE\s+\d+(?!.*\.{4})

RegEx Demo

(?!.*\.{4})是负面预测断言(没有匹配)我们在当前位置之前没有4个DOT。

PS:.*贪婪并消耗所有文本直到结束整个断言但它让正则表达式引擎回溯4个位置以匹配比赛结束时的4个点。

相关问题