Scrabble Python正则表达式匹配
我正在尝试创建一个简单的拼字解算程序,它可以创建Python单词语料库词典中所有3个字母单词的列表。我已经阅读了python中搜索正则表达式的相关书籍,但是还没有找到解决问题的方法 我是python的初学者,所以这可能是一个非常简单的修复或程序,但任何帮助都将不胜感激 这是我的表达式,它的意思是返回字典中仅包含元音的每3个字母的单词,但是它当前返回字典中包含元音的每个单词!我有一种感觉,这可能与我的元字符有关,但我不确定Scrabble Python正则表达式匹配,python,regex,string,dictionary,Python,Regex,String,Dictionary,我正在尝试创建一个简单的拼字解算程序,它可以创建Python单词语料库词典中所有3个字母单词的列表。我已经阅读了python中搜索正则表达式的相关书籍,但是还没有找到解决问题的方法 我是python的初学者,所以这可能是一个非常简单的修复或程序,但任何帮助都将不胜感激 这是我的表达式,它的意思是返回字典中仅包含元音的每3个字母的单词,但是它当前返回字典中包含元音的每个单词!我有一种感觉,这可能与我的元字符有关,但我不确定 vowels = [w for w in words if re.sear
vowels = [w for w in words if re.search('aeiou$', w)]
要存储仅由元音组成的所有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个。匹配字符串的开头
或者,如果要避免使用正则表达式,请执行以下操作:
results = []
for w in words:
if len(w) == 3:
for letter in w:
if letter not in 'aeiou':
break
else:
results.append(w)
如果找到一个非元音字母,的
将断开,其否则:
未到达,因此不会存储该单词。我将使用锚,添加也可以是元音的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)]
“它目前正在返回字典中包含元音的每个单词”-不,regex将只匹配字面上以'aeiou'
结尾的单词。“每3个字母的单词只包含元音”将是r'^[aeiou]{3}$'
。你应该试着读一本正则表达式教程。@jonrsharp我的错误,我应该漏掉$metacharacter。你能给我提供一些关于如何获得我想要的输出的指导吗?谢谢你的帮助,你的正则表达式产生了我想要的精确输出。作为旁注,是否可以轻松地编辑为regex,现在可以说匹配所有最长为3个字符的单词?我尝试在4之前简单地添加a<,但是没有效果。再次感谢您的支持help@freshwaterjoe对要做到这一点,只需将{3}
更改为{4}
。在我提供的链接中,您可以向上滚动并阅读更多关于模式中使用的符号及其含义的信息。Offtopic:如果您编辑您的问题并更改@john提到的不准确的部分,那就太好了。