擅长:python、mysql、java
<p><code>.*</code>匹配所有内容(除了行结束符)。在</p>
<p>这意味着如果<code>.*l[ae]r.*</code>包含<code>lar</code>或{<cd4>},则它将生成整个输入,否则将不匹配任何内容。在</p>
<p>你要匹配单词,而不是整行。在</p>
<p>由于单词必须以<code>l[ae]r</code>结尾,因此需要确保<code>r</code>是该单词的结尾。这可以使用<code>\b</code>(单词边界)来完成。在</p>
<p>由于单词必须以<code>l[ae]r</code>结尾,因此它必须以1个或多个(<code>+</code>)个单词字符作为前缀,即<code>\w</code>。在</p>
<p>现在,<code>\w</code>只匹配ASCII字母(A-Z),因此您需要启用Unicode模式,以便它匹配所有字母(例如<a href="https://www.fileformat.info/info/unicode/char/00f1/index.htm" rel="nofollow noreferrer">^{<cd12>}</a>和<a href="https://www.fileformat.info/info/unicode/char/0131/index.htm" rel="nofollow noreferrer">^{<cd13>}</a>)。还要注意,<code>\w</code>匹配数字(0-9)和下划线(U),但这通常是可以的。在</p>
<p>所以,你的正则表达式应该是:</p>
<pre><code>r"\w+l[ae]r\b"u
</code></pre>
<p>演示请参见<a href="https://regex101.com/r/mmWRP4/1" rel="nofollow noreferrer">regex101.com</a>。在</p>