正则表达式,当下一个字符为“ - ”时忽略行

时间:2015-04-21 21:14:48

标签: regex

如果[\s\d]*表示:重复匹配空格字符或数字。如果突然出现"-"字符,忽略整行的语法是什么?

就像在这个例子中https://regex101.com/r/eP1kG1/1 最后一行不应该匹配!

.*\bAPPLE.*\bPIE[\s\d]*

SWEET APPLE 1 - PIE 2 SWEET APPLE 1 - PIE 2 IS GOOD SWEET APPLE 1 - PIE3 SWEET APPLE 1 - PIE 1-3 IS GOOD

只有最后一行不匹配,这意味着:当有一个" - "在PIE之后,它应该失败。

这也适用于sql,并且不能使用look-ahead / behind

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?只需检查以确保PIE[\s\d]*后面没有-

(?!.*PIE[\s\d]*-).*\bAPPLE.*\bPIE[\s\d]*

答案 1 :(得分:1)

正如我在评论中提到的,预测通常会消耗更多的计算能力。我建议使用以下正则表达式:

^.*\bAPPLE.*\bPIE[\s\d]*[^-]*$

它只需要[\s\d]*之后的所有字符都是非连字符。锚点 - ^$ - 确保我们只检查整个字符串。

请参阅demo