Regex 将字符串拆分为辅音-元音序列
我尝试按如下方式拆分字符串:Regex 将字符串拆分为辅音-元音序列,regex,python-3.x,split,tokenize,Regex,Python 3.x,Split,Tokenize,我尝试按如下方式拆分字符串: 零个或多个辅音后跟零个或多个元音被视为标记 所有其他字符都作为标记 例如,“是的,oat是好的”被拆分为['ye'、's'、'、'oa'、't'、'i'、's'、'goo'、'd'] 尝试regexre.compile(r'[bcdefghjklmnpnpqrstuvwxyz]*[aeiou]*')。findall('yes,oat's good')给了我['yes',','oa','t','i','s','goo','d',''。为什么'yes'没有被分成'ye'
“是的,oat是好的”
被拆分为['ye'、's'、'、'oa'、't'、'i'、's'、'goo'、'd']
尝试regexre.compile(r'[bcdefghjklmnpnpqrstuvwxyz]*[aeiou]*')。findall('yes,oat's good')
给了我['yes',','oa','t','i','s','goo','d',''
。为什么'yes'
没有被分成'ye'
和's'
然后,尝试re.compile(r'[bcdefghjklmnpnpqrstuvwxyz]*[aeiou]*|.).findall('yes,oat是好的')
给了我同样的结果。为什么它不捕获,
和'
最后,有没有办法避免得到空字符串?您不应该将字母
e
作为辅音之一。除此之外,您应该使用交替模式来匹配所有其他字符作为标记。还应使用正向先行模式,以确保匹配零个或多个辅音,后跟零个或多个元音的模式至少匹配一个字母表:
re.findall(r'[^a-z]|(?=[a-z])[bcdfghjklmnpqrstvwxyz]*[aeiou]*', 'yes, oat is good', re.I)
这将返回:
['ye', 's', ',', ' ', 'oa', 't', ' ', 'i', 's', ' ', 'goo', 'd']
您的正则表达式是正确的,只需删除[bcdefghjklmnpnpqrstuvwxyz]中的元音“e”和“u”,谢谢您发布解决方案。但我的第二个问题没有得到回答。为什么我使用的正则表达式未命中
,“
和”
?