我正在尝试做单词求解器作为我的简历项目。我想开发一些单词的建议,通过缩小字典的单词使用正则表达式。是否可以编写RegEx,使其在词典中搜索满足这3个条件的单词?1.以字母“C”开头的单词1.单词中任何位置都不包含字母“T”1.单词overall必须在某处包含字母'E',但不是第一个(单词以'C'开头)和第三个位置?我的尝试是在下面,但我失败的第三个要求。
[c][^\Wt][^\Wte][^\Wt][^\Wt]
qkf9rpyu1#
下面假设您使用标志来启用不区分大小写和多行模式(因此^匹配行首,$匹配行尾)-re.I和re.M。以字母“C”开头的单词这只是^C.*$单词中的任何位置都不包含字母“T”这可以通过正向前瞻(?=^[^T]*$)来实现单词overall必须在某处包含字母“E”,但不能包含第一个和第三个位置这有点复杂,但可行:
^
$
re.I
re.M
^C.*$
(?=^[^T]*$)
E
(?=.*E)
(?!^..E)
把它粘在一起(把X1 M10 N1 X的从前面拉出来):
^(?=[^T]*$)(?=.*E)(?!..E)C.*$
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
all()
True
yzuktlbb3#
您可以从这里获取Wordle词典:https://static.nytimes.com/newsgraphics/2022/01/25/wordle-solver/assets/solutions.txt
3条答案
按热度按时间qkf9rpyu1#
下面假设您使用标志来启用不区分大小写和多行模式(因此
^
匹配行首,$
匹配行尾)-re.I
和re.M
。以字母“C”开头的单词
这只是
^C.*$
单词中的任何位置都不包含字母“T”
这可以通过正向前瞻
(?=^[^T]*$)
来实现单词overall必须在某处包含字母“E”,但不能包含第一个和第三个位置
这有点复杂,但可行:
E
(?=.*E)
E
不在第三个位置(?!^..E)
把它粘在一起(把X1 M10 N1 X的从前面拉出来):
mcvgt66p2#
这只是一个例子。你可以做一些小的帮助函数,使它更灵活。功能,如“字母是不是在这个词在所有”,“特定的字母在第三位”...
带有if条件的列表解析。所有条件都 Package 在
all()
中,如果每个语句都是True
,则all()
仅返回True
yzuktlbb3#
您可以从这里获取Wordle词典:
https://static.nytimes.com/newsgraphics/2022/01/25/wordle-solver/assets/solutions.txt