我正在使用位于here的正则表达式字典,想要查找仅包含以下字母的单词:B, C, D, E, H, I, K, O.
例如,cod, hoe, and hob.
我认为,执行此操作的简单方法是使用以下正则表达式查询:[bcdehiko]+
,但这会产生许多单词,这些单词至少包含一个带括号的字母实例以及任何其他字母。
答案 0 :(得分:1)
由于您尚未指定语言(我认为其他人在寻找这种答案时可能会觉得有用),因此这是python中您的问题的答案,而无需使用正则表达式。
l = 'bcdehiko'
d = ['cod', 'codz']
for w in d:
print(all(x in l for x in w))
此方法遍历字典 * d
,并确保该单词中的所有字符都存在于字符串l
中。看到它运作here。
*字典是指单词本意义上的字典,而不是计算意义上的字典。
在脚本中,变量d
是一个列表。
或者,如果您要确保一个单词包含字符列表中的至少一个字符,则可以在上述脚本中将any
替换为all
(可以通过添加单词来进行测试ran
到列表d
-在列表d
中不包含单个字母)。看到它运作here。
答案 1 :(得分:1)
对于该网站,最简单的解决方案是将启动的正则表达式与行首和行尾匹配相结合。这样可以确保单词只包含所需的字符。这是您要用来获得结果的正则表达式:
^[bcdehiko]+$
如果您对-
的语言表示满意,也可以使用它:
^[bcdehiko]+(-[bcdehiko]+)*$
为了第二个正则表达式的改进而致谢@ctwheels。
答案 2 :(得分:0)
您正在使用此正则表达式:
[bcdehiko]+
这意味着匹配方括号中给定字符的一个或多个实例。
但是,由于没有使用单词边界,因此此正则表达式还允许匹配单词中的其他字符。
您可能希望在正则表达式的两边都用\b
进行包装,以确保不允许使用其他字符:
\b[bcdehiko]+\b