regex - 如何匹配以至少一个 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)?
当在同一个字符串上按顺序运行时,我会得到所有上述匹配项。
如何提高效率?
解决方案
然而,这会导致正则表达式的阶乘数 - 3!在上面的例子中,k1(k2)?(k3)?, k1(k3)?(k2)?, k2(k1)?(k3)?, k2(k3)?(k1)?, k3(k1)?( k2)?, k3(k2)?(k1)? 当在同一个字符串上按顺序运行时,我会得到以上所有匹配项。
那是真实的。
如何提高效率?
使用适当的编程语言/脚本来完成这项工作。在那里,您可以使用循环并“轻松”生成所需的组合,而无需使用正则表达式。
注意:正则表达式不是作为一种万能工具创建的,而且绝对不是用于复杂的算法任务。
推荐阅读
- r - 将参数固定到 JAGS 中的分布
- html - 断点前的引导列重叠
- javascript - Sequelize 可以创建表格,但我无法插入或选择任何内容
- video - Youtube-DL - 如何为流式传输密钥 url 附加 URL 参数
- bash - 如何使用环境变量标记 docker 映像
- javascript - ReactJS,带有 axios 的 Swiper 滑块
- node.js - 多对多关联不返回关联表
- xpath - XPath - 查找属性的值,稍后用于验证数量 - 页面对象框架
- python - 从 HTML 按钮运行 python 脚本
- git - 删除了对密码身份验证的支持。请改用个人访问令牌