擅长:python、mysql、java
<p>除了负面展望之外,你还可以简单地“拼”出你想要什么:</p>
<pre><code>r'[12356789]\d{0,4}'
</code></pre>
<p>这将匹配从1到9(没有4或从0开始),然后最多再匹配4个数字。你知道吗</p>
<p>示例:</p>
<pre><code>import re
i = 0
for k in range(1,99999):
if re.match(r'[12356789]\d{0,4}',str(k)):
# print(k)
i += 1
print(i) # 88887
</code></pre>
<p>它为您提供88887个匹配项,因为:</p>
<pre><code>range(1,99999) (max excluded) = 99998 values
4 = 1 value
40,41,42, ..., 49 = 10 values
400,401,402, ..., 499 = 100 values
4000,4001,4002, ..., 4999 = 1000 values
40000,40001,40002, ..., 49999 = 10000 values
99998 - 1 - 10 - 100 - 1000 - 10000 = 88887
</code></pre>