擅长:python、mysql、java
<p>如果要确保16个字符被非字母环绕,请尝试</p>
<pre><code>re.search(r'\b([0-9A-F]{16})\b', i)
</code></pre>
<p><code>\b</code>“word boundary”操作符在一个位置上匹配,该位置的一侧由字母组成,另一侧由非字母组成。你知道吗</p>
<p>(如果您想更具体地了解哪些非阿尔卑斯人,您可以使用lookarounds:</p>
<pre><code>re.search(r'(?<![0-9A-F])([0-9A-F]{16})(?![0-9A-F])', i)
</code></pre>
<p>其中<code>(?<!...)</code>表示<em>“不能后跟…”</em>,<code>(?!...)</code>表示<em>“不能后跟…”</em>)</p>
<p>您还将注意到,我将character类收紧为只匹配十六进制数字,这本身就足以解决您的示例问题,并将<code>r'...'</code>原始字符串用于正则表达式,您可能应该始终这样做(至少在您完全理解Python非原始字符串中的反斜杠是如何损坏的之前)。你知道吗</p>