我试图使用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)
它应该与此一起工作:
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 个额外的元音(可能还有辅音)。它还允许在末尾添加额外的辅音,但确保没有更多的元音通过$