繁体   English   中英

负前瞻 RegEx 限制为确切的字符数

[英]Negative lookahead RegEx limited to an exact number of characters

如何将负前瞻 RegEx 限制为确切的字符数?

比如这句话应该被否定...

This car is not that fast!

而这个应该被允许......

The car you are about to see may not be that fast, but it's very beautiful!

RegEx 应匹配任何包含单词“car”的句子,但在以下 10 个字符中包含单词“not”的句子除外。 第一句话就是这种情况,“car”和“not”两个词之间只有 4 个字符。 所以这句话应该被否定。

然而,第二个句子在“car”和“not”两个词之间有超过 10 个字符,因此它应该通过 RegEx 否定断言。

基本上,我正在寻找的是一个负面的前瞻性正则表达式,它仅限于一定数量的字符。

实际上,您可以使用负前瞻:

.*?car(?.,{0.10}not).*

如果此规则中的 "car" 和 "not" 应该是单独的单词,而不仅仅是任何序列的子字符串,则添加适当的\b

.*?\bcar\b(?.,{0.10}\bnot\b).*

负前瞻断言,https://regex101.com/r/mD9JeR/11:

.*?car(?![\w\s]{0,10}not).*

看起来是否 \w\s 字符之前没有 0-10 次。 如果是这样,那么它将不匹配。

正向前瞻断言,仅供参考 - https://regex101.com/r/mD9JeR/12

.*?car(?=[\w\s]{10,}not).*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM