擅长:python、mysql、java
<p>对于与whitspace边界不区分大小写的匹配,您可以使用:</p>
<pre><code>(?i)(?<!\S)\w*(?:tion|ex|ph|[oia]st)\w*(?!\S)
</code></pre>
<p>模式匹配:</p>
<ul>
<li><code>(?i)</code>不区分大小写匹配的内联修饰符(或使用<code>re.I</code>)</li>
<li><code>(?<!\S)</code>在左侧断言空白边界</li>
<li><code>\w*</code>匹配可选的单词字符</li>
<li><code>(?:</code>非捕获组
<ul>
<li><code>tion|ex|ph|[oia]st</code>使用字符类匹配<code>tion</code>{<cd8>}{<cd9>}或<code>ost</code>{<cd11>}{<cd12>}</li>
</ul>
</li>
<li><code>)</code>关闭非捕获组</li>
<li><code>\w*</code>匹配可选的单词字符</li>
<li><code>(?!\S)</code>在右边声明一个空白边界</li>
</ul>
<p><a href="https://regex101.com/r/OMvXDw/1" rel="nofollow noreferrer">Regex demo</a><a href="https://ideone.com/1QYxvR" rel="nofollow noreferrer">Python demo</a></p>
<pre><code>def latin_ish_words(text):
import re
pattern = r"(?i)(?<!\S)\w*(?:tion|ex|ph|[oia]st)\w*(?!\S)"
return re.findall(pattern, text)
print(latin_ish_words("This functions as expected"))
</code></pre>
<p>输出</p>
<pre><code>['functions', 'expected']
</code></pre>