Python RegEx使用带有多个模式的re.sub

use*_*743 5 python regex

我试图使用Python RegEx re.sub[aeiou]一个单词的倒数第二个元音之前删除冒号,如果倒数第二个元音(从结尾)前面有另一个元音.

所以冒号必须在第3个和第4个元音之间,从这个词的结尾算起.

所以给出的第一个例子会像这样分解w4:32ny1h.

we:aanyoh > weaanyoh    # w4:32ny1h
hiru:atghigu > hiruatghigu
yo:ubeki > youbeki
Run Code Online (Sandbox Code Playgroud)

下面是我试图使用的RegEx声明,但我无法使其工作.

word = re.sub(ur"([aeiou]):([aeiou])(([^aeiou])*([aeiou])*([aeiou])([^aeiou])*([aeiou]))$", ur'\1\2\3\4', word)
Run Code Online (Sandbox Code Playgroud)

Ale*_*der 0

它应该与此一起工作:

word = re.sub(ur"(?<=[aeiou]):(?=[aeiou]([^aeiou]*[aeiou]){2}[^aeiou]*$)", ur'', word)
Run Code Online (Sandbox Code Playgroud)

请参阅此处的示例:https ://regex101.com/r/kA8xH3/2

请注意,我只捕获冒号并将其替换为空字符串,而不是捕获组并将它们连接起来。

Tt 检查冒号组合,然后进行前瞻检查是否有 2 个额外的元音(可能还有辅音)。它还允许在末尾添加额外的辅音,但确保没有更多的元音通过$