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

use*_*372 1 python regex

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

'abc.*(abc).*abc'
Run Code Online (Sandbox Code Playgroud)

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

'abc.*^(abc).*abc'
Run Code Online (Sandbox Code Playgroud)

但它不会起作用.

hwn*_*wnd 7

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

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

^abc(?:(?!abc).)*abc$
Run Code Online (Sandbox Code Playgroud)

现场演示


Kas*_*mvd 6

您可以尝试以下模式:

^abc((?!abc).)*abc$
Run Code Online (Sandbox Code Playgroud)

(?!abc)否定前瞻 - 断言abc你的字符串内部是不可能匹配的.

正则表达式可视化

Debuggex演示