擅长:python、mysql、java
<p>你可以用</p>
<pre><code>r'(?<![0-9])1[89][0-9]{2}(?![0-9])'
</code></pre>
<p>或者,用词边界:</p>
<pre><code>r'\b1[89][0-9]{2}\b'
</code></pre>
<p>请参见<strong><a href="https://regex101.com/r/mH4ZLr/2" rel="nofollow noreferrer">regex demo #1</a></strong>和<strong><a href="https://regex101.com/r/mH4ZLr/3" rel="nofollow noreferrer">regex demo #2</a></strong></p>
<p>正则表达式详细信息:</p>
<ul>
<li><code>(?<![0-9])</code>-左侧不允许立即使用ASCII数字</li>
<li><code>\b</code>-单词边界</li>
<li><code>1</code>-一个<code>1</code>位</li>
<li><code>[89]</code>-<code>8</code>或<code>9</code></li>
<li><code>[0-9]{2}</code>-两个ASCII数字</li>
<li><code>(?![0-9])</code>-右侧或右侧不允许立即使用ASCII数字</li>
<li><code>\b</code>-单词边界</li>
</ul>
<p>见<a href="https://ideone.com/DkNalO" rel="nofollow noreferrer">Python demo</a>:</p>
<pre><code>import re
def getNumbers(s):
return re.findall(r'(?<![0-9])1[89][0-9]{2}(?![0-9])', s)
testbirtdays = 'ABCDEFG 01.19.1701 1801 02.18.1901 2001'
print(getNumbers(testbirtdays)) # => ['1801', '1901']
</code></pre>