我真的是正则表达式的新手,我已经能够找到可以很容易地匹配它的正则表达式,但我不确定如何在没有它的情况下只匹配单词。
我有一个 .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/