我要匹配所有包含 字母“a”、“e”、“i”、“o”和“u”中的每一个都有一次 顺序,这与语料库中的任何其他英语单词都不匹配。 到目前为止,我能够从语料库中得到所有a,e,i,o,u的单词,但是有些单词的元音出现了不止一次,例如我得到的结果是“abietineous”,而我只寻找像“abstemious”这样的单词。你知道吗
下面是我的代码片段。请协助修复我的RE以获得这些结果。你知道吗
[w for w in wordlist if re.search('[a].* [e].* [i].* [o].* [u].', w)]
注意:我希望单词只包含a,e,I,o,u-按顺序排列,并且a,e,I,o,u只能出现一次。(对不起,我的代码中有空格,但格式没有捕获我的星号*除非我放了空格)
谢谢
正则表达式匹配意外单词的原因是
.
修饰符匹配任何字符。如果你想摆脱这一点,你需要限制字符之间的特殊的。在这种情况下,您需要使用一个否定字符类,该类将匹配除元音以外的任何内容。你知道吗演示:https://regex101.com/r/Wp2I6H/2
所以现在你可以找到预期的词:
请注意,由于您希望在循环中使用regex,因此最好在循环外编译regex,在循环中使用已编译的regex,而不是让python在每次迭代中编译regex。此外,由于regex将完全匹配单词,因此可以使用
re.match
而不是搜索。你知道吗试试这个:
相关问题 更多 >
编程相关推荐