Python正则表达式 - 不包含字符串的匹配模式

时间:2015-02-21 23:20:44

标签: python regex

我对正则表达式来说很陌生,并一直在四处寻找,但没有成功。给定一个字符串,我想删除任何以" abc"开头的模式,以" abc"结尾,并且不包含" abc"在中间。如果我做

'abc.*(abc).*abc'

它将匹配以" abc"开头的任何模式,以" abc"结尾,并且确实包含" abc"在中间。我该如何做相反的事情。我试试

'abc.*^(abc).*abc'

但它不会起作用。

2 个答案:

答案 0 :(得分:6)

您可以尝试以下模式:

^abc((?!abc).)*abc$

(?!abc)Negative Lookahead - 断言无法匹配字符串中的abc

Regular expression visualization

Debuggex Demo

答案 1 :(得分:4)

尝试否定部分模式的语法不正确。

此外,字符类之外的^在字符串的开头处断言位置。您需要使用Negative Lookahead断言,并确保anchor整个模式。

^abc(?:(?!abc).)*abc$

Live Demo