我对正则表达式真的很陌生,而且我能够很容易地找到可以匹配的正则表达式,但我不确定如何只匹配没有它的单词。
我的.txt文件包含
等字样sheep
fleece
eggs
meat
potato
我想制作一个正则表达式,用于匹配元音不连续重复的单词,因此会返回eggs meat potato
。
我对正则表达式没有太多经验,而且我也无法找到关于如何在线进行此操作的任何内容,所以如果有经验丰富的人可以帮助我,那就太棒了。谢谢!
我正在使用python并且已经使用https://regex101.com测试我的正则表达式。
谢谢!
编辑:提供正则表达式的错误结果示例。固定的。
答案 0 :(得分:9)
请注意,由于所需的输出包含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']
答案 1 :(得分:1)
@ John1024的答案应该有效 我也会尝试
“\ W *(一个{2,} | E {2,} | I {2,} | O {2,} | U {2,})\ W *” IG