【发布时间】:2015-04-23 12:36:11
【问题描述】:
我对正则表达式很陌生,并且一直在四处寻找没有成功的方法。给定一个字符串,我想删除任何以“abc”开头、以“abc”结尾且中间不包含“abc”的模式。如果我这样做了
'abc.*(abc).*abc'
它将匹配任何以“abc”开头、以“abc”结尾且中间包含“abc”的模式。我该怎么做相反的事情。我试试
'abc.*^(abc).*abc'
但它不会起作用。
【问题讨论】:
我对正则表达式很陌生,并且一直在四处寻找没有成功的方法。给定一个字符串,我想删除任何以“abc”开头、以“abc”结尾且中间不包含“abc”的模式。如果我这样做了
'abc.*(abc).*abc'
它将匹配任何以“abc”开头、以“abc”结尾且中间包含“abc”的模式。我该怎么做相反的事情。我试试
'abc.*^(abc).*abc'
但它不会起作用。
【问题讨论】:
您尝试否定部分模式的语法不正确。
此外,字符类之外的^ 断言字符串开头的位置。您需要使用Negative Lookahead 断言并确保anchor 整个模式。
^abc(?:(?!abc).)*abc$
【讨论】:
re.search()。
【讨论】: