regex - 自动正则表达式生成器

标签 regex algorithm

我有 N 个字符串。 此外,还有 K 个正则表达式,我不知道。每个字符串要么匹配一个正则表达式,要么就是垃圾。集合中共有 L 个垃圾字符串。 K 和 L 均未知。

我想推导正则表达式。显然,这个问题有无穷多个解。我需要找到一个“相当好的解决方案”,这

1) 最小化 K

2) 最小化 L

3) 最大化正则表达式的“细节”。我不知道这种质量的正确术语是什么。例如,字符串“ab123”可以描述为/ab\d+/或/\w+.+/,但第一个正则表达式更“具体”。

所有 3 个要求都需要作为一个复合标准,并具有一定的合理权重。

针对一种特殊情况的解决方案:如果 L = 0 且 K = 1(只有一个正则表达式,没有垃圾),那么我们可以找到字符串的 LCS(最长公共(public)子序列)并从中得出相应的正则表达式那里。但是,当我们有“噪声”(L > 0) 时,这种方法就不起作用了。

非常感谢任何想法(或对现有工作的指示)。

最佳答案

您正在尝试做的是语言学习语言推理,但不是通过一组给定示例概括(以及可能的反例),您希望推断出一种具有小而特定语法的语言。

我不确定对此进行了多少研究。但是,如果您也有兴趣找到接受所有 n 字符串的最小(= 一般)正则表达式,请在 MDL 上搜索论文。 (最小描述长度)和 FSMs (有限状态机)。

两个有趣的查询 Google Scholar :

关于regex - 自动正则表达式生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895425/

相关文章:

java - 在未知索引处的某些字符之间搜索子字符串

python - python中的正则表达式匹配

regex - Perl 正则表达式 : replace placeholder with variable content in template

python - 动力迭代

javascript - 正则表达式语法错误 - 无需重复

regex - 使用 Scala 模式匹配时工作正则表达式失败

python - 包装器的循环参数要求

algorithm - 遍历单向链表随机取一个元素

java - 自定义二分搜索中的 ArrayIndesOutOfBoundsException?

python - 在旋转排序数组中查找最小值的回收数组解决方案