我知道三件事...
1)我知道:
a.{1,250}?z
Run Code Online (Sandbox Code Playgroud)
将检查 a 是否在 z 的 250 个字符以内。
2)我知道
a[^b]{1,250}?z
Run Code Online (Sandbox Code Playgroud)
将检查 a 是否在 z 的 250 个字符以内,但这些字符都不是 b。
3)我也知道
a[^bad]{1,250}?z
Run Code Online (Sandbox Code Playgroud)
将检查 a 是否在 z 的 250 个字符以内,但这些字符都不是 b、a 或 d。
但
4)
我将如何检查 a 是否出现在 z 的 250 个字符内,但单词 bad 没有出现在它们之间?
想象“字符串”需要完全匹配(就像在谷歌搜索中一样),伪代码看起来像:
a[^"bad"]{1,250}?z
Run Code Online (Sandbox Code Playgroud)
简单,使用消极的前瞻。
a(?:(?!bad).){1,250}?z
Run Code Online (Sandbox Code Playgroud)
(?:(?!bad).)
将匹配任何字符(换行符除外),但不匹配 substring bad
。
而且您必须使用锚点或单词边界才能进行精确匹配,否则上述正则表达式将匹配adccz
此acbadccz
输入。
\ba(?:(?!bad).){1,250}?z\b
Run Code Online (Sandbox Code Playgroud)