擅长:python、mysql、java
<p>正则表达式匹配意外单词的原因是<code>.</code>修饰符匹配任何字符。如果你想摆脱这一点,你需要限制字符之间的特殊的。在这种情况下,您需要使用一个否定字符类,该类将匹配除元音以外的任何内容。你知道吗</p>
<pre><code>^[^aouie]*a[^aeoui]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*$
</code></pre>
<p>演示:<a href="https://regex101.com/r/Wp2I6H/2" rel="nofollow noreferrer">https://regex101.com/r/Wp2I6H/2</a></p>
<p>所以现在你可以找到预期的词:</p>
<pre><code>regex = re.compile(r'[^aouie]*a[^aeoui]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*')
[w for w in wordlist if regex.match(w)]
</code></pre>
<p>请注意,由于您希望在循环中使用regex,因此最好在循环外编译regex,在循环中使用已编译的regex,而不是让python在每次迭代中编译regex。此外,由于regex将完全匹配单词,因此可以使用<code>re.match</code>而不是搜索。你知道吗</p>