作为一些学校工作的一部分,我们设定的任务是使用Python中的正则表达式搜索nltk单词语料库并查找仅包含元音的所有3个字母单词。 3个字母的部分很简单,但我找不到只包含元音的单词有困难。我尝试了几种不同的方法但没有成功,我将在下面发布。如果有人能够指出我正确的方向,那就是我做错了。那就太好了。
import nltk
words = nltk.corpus.words.words('en')
threeLetterConsonants = [w for w in words if re.search('[aeiou]', w)]
threeLetterConsonants[:10]
返回
['a', 'aa', 'aal', 'aalii', 'aam', 'Aani', 'aardvark', 'aardwolf', 'Aaron', 'Aaronic']
我也尝试过:
threeLetterConsonants = [w for w in words if re.search('[^bcdfghjklmnpqrstvwxyz]', w)]
threeLetterConsonants[:10]
返回
['A', 'a', 'aa', 'aal', 'aalii', 'aam', 'Aani', 'aardvark', 'aardwolf', 'Aaron']
答案 0 :(得分:4)
re.search()
返回true(在您的情况下,如果单词包含至少一个元音)。如果您希望整个输入字符串匹配,则需要使用anchors:
threeLetterVowels = [w for w in words if re.search('^[aeiou]+$', w)]
根据@pinkboi的建议,你可以使用"三字母限制"进入正则表达式:
threeLetterVowels = [w for w in words if re.search('^[aeiou]{3}$', w)]
答案 1 :(得分:0)
跟着另一个答案;如果你需要将答案限制为只有三个字母,那么在你的正则表达式中你有^ [aeiou] {3} $将它限制为3(并且只有3个)字母。