拼字游戏Python正则表达式匹配

时间:2015-03-22 16:25:14

标签: python regex string dictionary

我正在尝试创建一个简单的拼字游戏求解程序,它可以在Python单词语料库词典中创建所有3个字母单词的列表。我已经阅读了在python中搜索正则表达式的内容,但是还没有能够为我的问题找到解决方案。

我是python的初学者,所以这可能是一个非常简单的修复或程序,但任何帮助将非常感激。

这是我的表达式,它意味着返回每个由字典中的元音组成的3个字母单词,但是它当前正在返回包含元音的字典中的每个单词!我觉得这可能与我的元字符有关,但我不确定。

vowels = [w for w in words if re.search('aeiou$', w)]

2 个答案:

答案 0 :(得分:1)

存储仅由元音组成的所有3个字母的单词:

import re

words = ['asd', 'aei', 'a']
result = [w for w in words if re.match(r'[aeiou]{3}$', w)]

print(result)

[asd]会匹配'a''s''d'{3}恰好与其中的3个相匹配。 match()匹配字符串的开头。


或者,如果你想避免使用正则表达式:

results = []
for w in words:
    if len(w) == 3:

        for letter in w:
            if letter not in 'aeiou':
                break
        else:
            results.append(w)

如果找到非元音,for会中断且未达到else:,则不会存储该字。

答案 1 :(得分:0)

我使用锚点,添加也可以是元音的y字母,以及[aeiouy]字符类:

   result = [w for w in words if re.match(r'^[aeiouy]{3}$', w)]

如果' y'正在产生不需要的结果,您可以从字符类中删除y字母。

   result = [w for w in words if re.match(r'^[aeiou]{3}$', w)]