首页 > 解决方案 > 如何匹配以至少一个 k 开头并且可以以任意顺序包含多个关键字的字符串

问题描述

k1, k2, ..., kn 个关键字。例如,给定 k1、k2、k3,我需要匹配以下所有匹配项。

k1
k2
k3
k1k2
k1k3
k2k1
k2k3
k3k1
k3k2
k1k2k3
k1k3k2
k2k1k3
k2k3k1
k3k1k2
k3k2k1

我的逻辑是为 k1、k2、...、kn(n 是变量)的每个排列创建正则表达式。然而,这会导致正则表达式的阶乘数 - 3!在上面的例子中,k1(k2)?(k3)?, k1(k3)?(k2)?, k2(k1)?(k3)?, k2(k3)?(k1)?, k3(k1)?(k2)?,k3(k2)?(k1)?当在同一个字符串上按顺序运行时,我会得到所有上述匹配项。

如何提高效率?

标签: regex

解决方案


然而,这会导致正则表达式的阶乘数 - 3!在上面的例子中,k1(k2)?(k3)?, k1(k3)?(k2)?, k2(k1)?(k3)?, k2(k3)?(k1)?, k3(k1)?( k2)?, k3(k2)?(k1)? 当在同一个字符串上按顺序运行时,我会得到以上所有匹配项。

那是真实的。

如何提高效率?

使用适当的编程语言/脚本来完成这项工作。在那里,您可以使用循环并“轻松”生成所需的组合,而无需使用正则表达式。


注意:正则表达式不是作为一种万能工具创建的,而且绝对不是用于复杂的算法任务。


推荐阅读