-1

我正在使用位于此处的正则表达式词典,并且想查找仅包含以下字母的单词:B, C, D, E, H, I, K, O. 因此,例如:cod, hoe, and hob.

我认为执行此操作的简单方法是使用以下正则表达式查询:[bcdehiko]+,但这会产生许多单词,其中至少包含一个括号中的字母实例,以及任何其他字母。

4

3 回答 3

1

由于您没有指定一种语言(而且我认为寻找此类答案的其他人可能会觉得这很有用),因此这里是您在中的问题的答案,无需使用正则表达式。

l = 'bcdehiko'
d = ['cod', 'codz']

for w in d:
    print(all(x in l for x in w))

此方法循环遍历字典*d并确保该单词中的所有字符都存在于字符串中l。看到它在这里工作。

* OP原始问题中的字典是指单词本意义上的字典,而不是计算意义上的字典。
在脚本中,变量d是一个列表。


或者,如果您想确保一个单词至少包含字符列表中的一个字符,您可以在上面的脚本中any替换为列表)。看到它在这里工作。allrandd

于 2019-10-01T21:56:13.593 回答
1

对于该网站,最简单的解决方案是将您开始的正则表达式与行开始和行结束匹配结合起来。这将确保该单词只包含您想要的字符。这是您要用于获取结果的正则表达式:

^[bcdehiko]+$

如果你对-文字没问题,你也可以使用它:

^[bcdehiko]+(-[bcdehiko]+)*$

感谢@ctwheels 对第二个正则表达式的改进。

于 2019-10-01T22:06:58.683 回答
0

您正在使用此正则表达式:

[bcdehiko]+

这意味着匹配方括号中给定字符的一个或多个实例。

然而,这个正则表达式也允许匹配单词中的其他字符,因为没有使用单词边界。

您可能希望\b在任一侧包装您的正则表达式,以确保不允许其他字符:

\b[bcdehiko]+\b
于 2019-10-01T22:03:28.593 回答