Python 正则表达式 - 查找仅包含元音的 3 个字母单词
Python regular expressions - find 3 letter words containing only vowels
作为一些学校作业的一部分,我们被布置的任务是在 Python 中使用正则表达式来搜索 nltk 词语料库并找到仅包含元音的所有 3 个字母的词。 3 个字母的部分很简单,但我很难找到只包含元音的单词。我尝试了几种不同的方法但没有成功,我将在下面 post。如果有人能指出我做错了什么的正确方向,那就太好了。
import nltk
words = nltk.corpus.words.words('en')
threeLetterConsonants = [w for w in words if re.search('[aeiou]', w)]
threeLetterConsonants[:10]
returns
['a', 'aa', 'aal', 'aalii', 'aam', 'Aani', 'aardvark', 'aardwolf', 'Aaron', 'Aaronic']
我也试过:
threeLetterConsonants = [w for w in words if re.search('[^bcdfghjklmnpqrstvwxyz]', w)]
threeLetterConsonants[:10]
returns
['A', 'a', 'aa', 'aal', 'aalii', 'aam', 'Aani', 'aardvark', 'aardwolf', 'Aaron']
re.search()
returns 如果输入的 部分 匹配(在您的情况下,如果单词包含 至少一个元音)。如果要匹配整个输入字符串,需要使用anchors:
threeLetterVowels = [w for w in words if re.search('^[aeiou]+$', w)]
正如@pinkboi 所建议的,您也可以将 "three letter restriction" 放入正则表达式中:
threeLetterVowels = [w for w in words if re.search('^[aeiou]{3}$', w)]
跟随另一个答案;如果您需要将答案限制为仅三个字母,那么在您拥有 ^[aeiou]{3}$ 的正则表达式中会将其限制为 3 个(且仅 3 个)字母。
作为一些学校作业的一部分,我们被布置的任务是在 Python 中使用正则表达式来搜索 nltk 词语料库并找到仅包含元音的所有 3 个字母的词。 3 个字母的部分很简单,但我很难找到只包含元音的单词。我尝试了几种不同的方法但没有成功,我将在下面 post。如果有人能指出我做错了什么的正确方向,那就太好了。
import nltk
words = nltk.corpus.words.words('en')
threeLetterConsonants = [w for w in words if re.search('[aeiou]', w)]
threeLetterConsonants[:10]
returns
['a', 'aa', 'aal', 'aalii', 'aam', 'Aani', 'aardvark', 'aardwolf', 'Aaron', 'Aaronic']
我也试过:
threeLetterConsonants = [w for w in words if re.search('[^bcdfghjklmnpqrstvwxyz]', w)]
threeLetterConsonants[:10]
returns
['A', 'a', 'aa', 'aal', 'aalii', 'aam', 'Aani', 'aardvark', 'aardwolf', 'Aaron']
re.search()
returns 如果输入的 部分 匹配(在您的情况下,如果单词包含 至少一个元音)。如果要匹配整个输入字符串,需要使用anchors:
threeLetterVowels = [w for w in words if re.search('^[aeiou]+$', w)]
正如@pinkboi 所建议的,您也可以将 "three letter restriction" 放入正则表达式中:
threeLetterVowels = [w for w in words if re.search('^[aeiou]{3}$', w)]
跟随另一个答案;如果您需要将答案限制为仅三个字母,那么在您拥有 ^[aeiou]{3}$ 的正则表达式中会将其限制为 3 个(且仅 3 个)字母。