我正在尝试使用正则表达式提取一个单词中的VCV(元音辅音元音)模式的所有实例。这还应该包括开始和结束,开始时可以是CV,结束时可以是VC。
给出“ bookeeper”一词作为输入,预期的输出将是:
boo, ookee, eepi, ing
我当前使用正则表达式库处理重叠模式的尝试如下:
import regex as re
word = "bookeeping"
print(re.findall(r'[aeiouy]+?[bcdfghkjlmnpqrstvwxz]+[aeiouy]+', word, overlapped=True))
(错误的输出):
['ookkee', 'okkee', 'eepi', 'epi']
'okkee'无效,并且不能抓住起点或终点。如何强制它排除不包含所有先前匹配项的单词?
答案 0 :(得分:1)
从您的预期输出看来,在您要寻找的元音-辅音-元音模式中,元音是可选的,在这种情况下,将可以执行以下操作:
import re
pos = 0
while True:
match = re.search(r'[aeiouy]*[bcdfghkjlmnpqrstvwxz]+([aeiouy]*)', 'bookeeping'[pos:])
if not match:
break
print(match.group(0))
pos += match.start(1)
这将输出:
boo
ookee
eepi
ing