python - 正则表达式:如何匹配没有连续元音的单词?

标签 python regex

我真的是正则表达式的新手,我已经能够找到可以很容易地匹配它的正则表达式,但我不确定如何在没有它的情况下只匹配单词。

我有一个 .txt 文件,里面有这样的话

sheep
fleece
eggs
meat
potato

我想创建一个正则表达式来匹配元音不连续重复的单词,因此它会返回 eggs meat potato

我对正则表达式不是很有经验,而且我一直找不到关于如何在线执行此操作的任何信息,所以如果有更多经验的人可以帮助我,那就太棒了。谢谢!

我正在使用 python 并一直在使用 https://regex101.com 测试我的正则表达式.

谢谢!

编辑:为正则表达式提供了不正确的结果示例。固定。

最佳答案

请注意,由于所需的输出包括 meat 但不包括 fleece,因此允许所需的单词具有重复的元音,只是不重复相同的元音。

选择没有重复元音的行:

>>> [w for w in open('file.txt') if not re.search(r'([aeiou])\1', w)]
['eggs\n', 'meat\n', 'potato\n']

正则表达式 [aeiou] 匹配任何元音(如果您愿意,可以包含 y)。正则表达式 ([aeiou])\1 匹配后跟相同元音的任何元音。因此,not re.search(r'([aeiou])\1', w) 仅对不包含重复元音的字符串 w 为真。

附录

如果我们想排除 meat 因为它有两个连续的元音,即使它们不是相同元音,那么:

>>> [w for w in open('file.txt') if not re.search(r'[aeiou]{2}', w)]
['eggs\n', 'potato\n']

关于python - 正则表达式:如何匹配没有连续元音的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38862349/

相关文章:

javascript - 属性值的正则表达式

regex - 多次出现捕获组的 sed 正则表达式

python - 将字符串日期转换为纪元时间不适用于 Cython 和 POSIX C 库

regex - htaccess重写规则3变量

C# 无法识别的转义序列

python - pycharm上pytorch 1.6.0安装问题

javascript - 需要正则表达式来制作 * 粗体之间的文本

像 nosetests 这样的 Python 基准测试工具?

python - 如何在 Python 中访问时间的子午线?

python - Python 脚本中函数的顺序是否重要?