使用通配符

时间:2018-03-19 16:02:13

标签: python-3.x

我需要用'good'替换句子中第一个字符串实例。字符串以'not'开头,以'bad'结尾,但可以在其间包含多个单词。现在我只明白如果句子中有多个'not *** bad'实例,它会取代第一个'不'和最后'坏'之间的所有内容。

re.sub(r'not \w+ bad\b', 'good', s, count=1)
例如“电影不是那么糟糕”回归“电影好” 但 “这部电影并没有那么糟糕,一点都不差”回归“电影一点都不好”

1 个答案:

答案 0 :(得分:2)

target mean=0.0500 actual mean=0.0347 target stdev=0.0500 actual stdev=0.0500 是你想要的正则表达式。如果要捕获多个单词,则需要在每个单词后面包含空格,并使用非贪婪的运算符捕获它们。如果您不要求"糟糕"也不需要跟踪r'not (\w+ )+?bad'。位于字符串的最后

\b

s = "The movie was not that bad, not bad at all" re.sub(r'not (\w+ )+?bad', 'good', s, count=1) # returns "The movie was good, not bad at all" # same thing with multiple words in between s = "The movie was not all that bad, not bad at all" re.sub(r'not (\w+ )+?bad', 'good', s, count=1) 运算符是贪婪的,所以它将消耗第一个' not'之间的所有单词。而最后的“不好”。如果您只想要第一个+,则使用非贪婪版本not ... bad来捕获整个单词,而使用贪婪+?来捕获单词中的单个字符。