regex 利用正则表达式缩小基于Wordle规则的词典

yshpjwxd  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(136)

我正在尝试做单词求解器作为我的简历项目。我想开发一些单词的建议,通过缩小字典的单词使用正则表达式。
是否可以编写RegEx,使其在词典中搜索满足这3个条件的单词?
1.以字母“C”开头的单词
1.单词中任何位置都不包含字母“T”
1.单词overall必须在某处包含字母'E',但不是第一个(单词以'C'开头)和第三个位置?
我的尝试是在下面,但我失败的第三个要求。

[c][^\Wt][^\Wte][^\Wt][^\Wt]
qkf9rpyu

qkf9rpyu1#

下面假设您使用标志来启用不区分大小写和多行模式(因此^匹配行首,$匹配行尾)-re.Ire.M
以字母“C”开头的单词
这只是^C.*$
单词中的任何位置都不包含字母“T”
这可以通过正向前瞻(?=^[^T]*$)来实现
单词overall必须在某处包含字母“E”,但不能包含第一个和第三个位置
这有点复杂,但可行:

  • 确保文本在某处包含E(?=.*E)
  • 确保E不在第三个位置(?!^..E)

把它粘在一起(把X1 M10 N1 X的从前面拉出来):

^(?=[^T]*$)(?=.*E)(?!..E)C.*$
mcvgt66p

mcvgt66p2#

这只是一个例子。你可以做一些小的帮助函数,使它更灵活。功能,如“字母是不是在这个词在所有”,“特定的字母在第三位”...

dic = {'words': ['value', 'cache', 'cacao', 'racer', 'house']}

filt = [x for x in dic['words'] if all([x[0].upper()=='C', 'T' not in x.upper(), 'E' in x.upper()])]

print(filt)
['cache']

带有if条件的列表解析。所有条件都 Package 在all()中,如果每个语句都是True,则all()仅返回True

相关问题