如果[\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
答案 0 :(得分:1)
PIE[\s\d]*
后面没有-
:
(?!.*PIE[\s\d]*-).*\bAPPLE.*\bPIE[\s\d]*
答案 1 :(得分:1)
正如我在评论中提到的,预测通常会消耗更多的计算能力。我建议使用以下正则表达式:
^.*\bAPPLE.*\bPIE[\s\d]*[^-]*$
它只需要[\s\d]*
之后的所有字符都是非连字符。锚点 - ^
和$
- 确保我们只检查整个字符串。
请参阅demo。