【发布时间】:2020-09-14 22:34:42
【问题描述】:
我正在尝试查看 RE 中是否有一种方法可以表达由一组给定字母加上一个通配符组成的单词的匹配。
例如,查找系统词典中包含 C、O、I 和任何其他字母的任意组合的所有单词,以任意顺序查找,而不重复使用已匹配的字母,并用完所有提供的字母。所以在这种情况下,一个 RE 需要匹配
coif
coil
coin
coir
foci
icon
loci
rico
也许还有我想念的其他人。
我没有足够的数学逻辑学家知道这在正则表达式中是否可能。
它不必完全在一个正则表达式中完成——如果它使用几个阶段就可以了;它可以在脚本中进行后处理。我找不到像'^[oci.]*$'(错误)这样的表示,甚至开始解决这个问题。
【问题讨论】:
-
我不确定 c、o、i 是否会聚在一起。如果确实如此,那么这可能有效吗? ((c|o|i){1}(c|o|i){1}(c|o|i){1})
-
([^cio])(?=.*c)(?=.o)(?=.*i).+ 试试这个。如果您将其限制为 4 个字母,它应该可以工作。
-
链接一些前瞻可以工作。 F.e.
^(?=.*[i])(?=.*[c])(?=.*[o])(?!.*(\w).*\1)[a-z]{4}$ -
@stackFan 在这个例子中,所有字母 (c,o,i) 必须以任意顺序出现一次
-
arundeep LukStorms 那些返回不匹配