<p>我试图用“早午餐”来代替“早午餐”这一作品。我使用的正则表达式可以正确识别事件,但是当我尝试使用回复sub它取代的文本比所识别的要多关于芬德尔. 我使用的正则表达式是:</p>
<pre><code>re.compile(r'(?:^|\.)(?![^.]*saturday)(?![^.]*sunday)(?![^.]*weekend)[^.]*(brunch)',re.IGNORECASE)
</code></pre>
<p>字符串是</p>
<pre><code>str = 'Valid only for dine-in January 2 - March 31, 2015. Excludes brunch, happy hour, holidays, and February 13 - 15, 2015.'
</code></pre>
<p>我想让它产生:</p>
<pre><code>'Valid only for dine-in January 2 - March 31, 2015. Excludes BRUNCH, happy hour, holidays, and February 13 - 15, 2015.'
</code></pre>
<p>步骤如下:</p>
<pre><code>>>> reg.findall(str)
>>> ['brunch']
>>> reg.sub('BRUNCH',str)
>>> Valid only for dine-in January 2 - March 31, 2015BRUNCH, happy hour, holidays, and February 13 - 15, 2015.
</code></pre>
<p>编辑:</p>
<p>我使用的最终解决方案是:</p>
<pre><code>re.compile(r'((?:^|\.))(?![^.]*saturday)(?![^.]*sunday)(?![^.]*weekend)([^.]*)(brunch)',re.IGNORECASE)
re.sub('\g<1>\g<2>BRUNCH',str)
</code></pre>