擅长:python、mysql、java
<p><strong>为什么它匹配多于<code>brunch</code></strong></p>
<p>因为你的正则表达式实际上比早午餐更配</p>
<p><a href="https://regex101.com/r/wV3mP9/5" rel="nofollow"><strong>See link on how the regex match</strong></a></p>
<p><strong>为什么不在<code>findall</code>中显示?</strong></p>
<p>因为您只包装了paranithesis中的<code>brunch</code></p>
<pre><code>>>> reg = re.compile(r'(?:^|\.)(?![^.]*saturday)(?![^.]*sunday)(?![^.]*weekend)[^.]*(brunch)',re.IGNORECASE)
>>> reg.findall(str)
['brunch']
</code></pre>
<p>在把整个<code>([^.]*brunch)</code>包装在纸上之后</p>
<pre><code>>>> reg = re.compile(r'(?:^|\.)(?![^.]*saturday)(?![^.]*sunday)(?![^.]*weekend)([^.]*brunch)',re.IGNORECASE)
>>> reg.findall(str)
[' Excludes brunch']
</code></pre>
<ul>
<li><code>re.findall</code>忽略那些未被捕获的</li>
</ul>