<p>您声明您的目标是一个单词而不是一行,因此首先设置锚点以仅处理单词:</p>
<pre><code>\b[regex will go here]\b
^ ^ assert a word boundary
</code></pre>
<p>接下来,一个冒号前接一个<code>[aeiou]</code>,在冒号后面的部分还有两个<code>[aeiou]</code>。我假设与案件无关?在</p>
^{pr2}$
<p><a href="https://regex101.com/r/iR0kE5/6" rel="nofollow">Demo</a></p>
<p>(注意<code>[^aeiou\W]</code>的用法是辅音字母、数字和u,但不是其他字符<a href="https://regex101.com/r/yI5bE7/1" rel="nofollow">Demo</a>。)</p>
<p>Python演示:</p>
<pre><code>import re
tests={
'matches':[
'we:aanyoh',
'hiru:atghigu',
'yo:ubeki'
],
'no match':[
'wz:ubeki',
'we:a anyoh',
'yo:ubek',
'hiru:atghiguu'
]
}
for k, v in tests.items():
print k
for e in v:
s=re.sub(r'(?i)(\b\w+[aeiou]):((?:[aeiou][^aeiou\s\W]*){3}\b)', r'\1\2', e)
print '\t{} > {}'.format(e, s)
</code></pre>
<p>印刷品:</p>
<pre><code>matches
we:aanyoh > weaanyoh
hiru:atghigu > hiruatghigu
yo:ubeki > youbeki
no match
wz:ubeki > wz:ubeki
we:a anyoh > we:a anyoh
yo:ubek > yo:ubek
hiru:atghiguu > hire:atghiguu
</code></pre>
<p>这将只处理带有单个冒号的单词。如果要匹配具有多个冒号但具有相同模式的单词,请更改LH模式以使字符类包含一个冒号和一个不是<code>\b</code>的锚点。在</p>
<p>示例:<code>(?i)(^[\w:]+[aeiou]):((?:[aeiou][^aeiou\s\W]*){3}\b)</code></p>