擅长:python、mysql、java
<p><code>\d[1-34]</code>实际上匹配一个数字,后跟1-3范围内的数字或“4”。在</p>
<ul>
<li><p>匹配“34”是因为<code>\d</code>匹配3,然后character类中的4与4匹配。</p></li>
<li><p>“12”匹配是因为,<code>\d\</code>匹配1,然后2匹配,因为它在1-3范围内。</p></li>
</ul>
<p>如评论中所述,更好的解决方案是匹配所有2位数字并手动验证范围:</p>
<pre><code>>>> re.findall("(\d\d)","hi34hi30hi12")
['34', '30', '12']
</code></pre>
<p>现在迭代列表并验证范围。在</p>