如何否定正则表达式中的字符串

时间:2015-09-03 03:55:01

标签: regex

我知道三件事......

1)我知道:

a.{1,250}?z

将检查a是否在z的250个字符之内。

2)我知道

a[^b]{1,250}?z

将检查a是否在z的250个字符之内,但这些字符都不是b。

3)我也知道

a[^bad]{1,250}?z

将检查a是否在z的250个字符内,但这些字符都不是b,a或d。

4)

我如何检查a是否在z的250个字符内出现,但是在它们之间没有出现坏词?

想象"字符串"要求完全匹配(如在谷歌搜索中)伪代码看起来像:

a[^"bad"]{1,250}?z

1 个答案:

答案 0 :(得分:3)

简单,使用一种预示性的前瞻。

a(?:(?!bad).){1,250}?z

(?:(?!bad).)将匹配任何字符(换行符除外),但不匹配子字符串bad

DEMO

此外,您必须使用锚点或字边界才能进行完全匹配,否则上述正则表达式将匹配此adccz输入的acbadccz

\ba(?:(?!bad).){1,250}?z\b