1

如何编写匹配任何这些字符的正则表达式

[a-z.' ]

但不包括这个表达式

(?:bl(?: |\. |\.)ah)

?

表达式可能出现 {0,} 次,出现在字符串的开头、中间或结尾

4

2 回答 2

1

使用负面的展望:

^(?!.*bl[. ]*ah)[a-z.' ]*

如果您想对“blah”中的最大干预字符数持怀疑态度:

 ^(?!.*bl[. ]{,2}ah)[a-z.' ]*
于 2013-01-23T05:39:49.150 回答
1

除非我遗漏任何东西,否则以下模式应该匹配。你可能想用边界字符包裹“blah”——\bblah\b

(?<=^|[^a-z.' ]|blah)(?:(?!blah)[a-z.' ])+

与您的主要模式(需要避免bl ah,bl. ahbl.ah)一样

~
    (?<=^|[^a-z.' ]|bl[. ]ah|bl\.\ ah)
    (?:(?!bl(?:\ |\.\ ?)ah)[a-z.' ])+
~ix

向后看的坏事是,您需要声明精确的长度。因此,您需要在后视中明确写出您想要(或不想要)的内容。

于 2013-01-23T02:58:45.520 回答