gpt4 book ai didi

python - 正则表达式 (Python) - 匹配具有两个或多个不同元音的单词

转载 作者:行者123 更新时间:2023-11-28 20:33:39 27 4
gpt4 key购买 nike

我正在尝试匹配包含两个或更多不同元音的字符串中的单词。问题可以限制为小写。

string = 'pool pound polio papa pick pair'

预期结果:

pound, polio, pair

poolpapa会失败,因为它们只包含一个不同的元音。然而,polio很好,因为即使它包含两个 o s,它包含两个不同的元音( io )。 mississippi会失败,但是 albuquerque会过去的)。

思考过程:使用环视,大概五次(忽略大写字母),用括号括起来,带有 {2}之后。像这样的东西:

re.findall(r'\w*((?=a{1})|(?=e{1})|(?=i{1})|(?=o{1})|(?=u{1})){2}\w*', string)

但是,这会匹配所有六个单词。

我杀了{1} s,这使它更漂亮({1} s 似乎是不必要的),但它仍然返回所有六个:

re.findall(r'\w*((?=a)|(?=e)|(?=i)|(?=o)|(?=u))\w*', string)

在此先感谢您的帮助。我检查了其他查询,包括 "How to find words with two vowels" , 但似乎都不够接近。另外,我正在寻找纯正则表达式。

最佳答案

您不需要 5 个单独的前瞻,这完全是矫枉过正。只需捕获 capture group 中的第一个元音, 然后使用 negative lookahead断言它不同于第二个元音:

[a-z]*([aeiou])[a-z]*(?!\1)[aeiou][a-z]*

See the online demo.

关于python - 正则表达式 (Python) - 匹配具有两个或多个不同元音的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50077264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com