擅长:python、mysql、java
<p>让我们看看匹配的是什么:</p>
<pre><code>import re
m = re.compile(r"(test)?").search("tes")
m.span()
# have (0, 0)
</code></pre>
<p>它是空字符串。为什么?在</p>
<p>因为<code>?</code>这里的意思是零次或一次</em>(就像<code>{0, 1}</code>)。所以第一组可以匹配字符串<code>test</code>或空字符串(我们有)。在</p>
<p>以下是<a href="https://docs.python.org/3/library/re.html#regular-expression-syntax" rel="nofollow noreferrer">docs</a>中的一句话:</p>
<blockquote>
<p><code>'?'</code>
Causes the resulting RE to match 0 or 1 repetitions of the preceding RE. ab? will match either ‘a’ or ‘ab’.</p>
</blockquote>