regex - 正则表达式生成器/缩减器?

标签 regex algorithm

<分区>

同事向我提出了一个有趣的问题,涉及我们目前的运营痛点,我很好奇是否有任何东西(实用程序/库/算法)可以帮助实现自动化。

假设您有一个文字值列表(在我们的例子中,它们是 URL)。我们想要做的是,基于这个列表,提出一个匹配所有这些文字项的正则表达式。

所以,如果我的列表是:

http://www.example.com
http://www.example.com/subdir
http://foo.example.com

最简单的答案是

^(http://www.example.com|http://www.example.com/subdir|http://foo.example.com)$

但是对于大量数据来说这会变得很大,我们有一个长度限制,我们正在努力保持在这个限制之下。

目前我们手动编写正则表达式,但这不能很好地扩展,也不能很好地利用任何人的时间。是否有更自动化的方法来分解源数据以得出与所有源值匹配的长度最佳正则表达式?

最佳答案

Aho-Corasick匹配算法构造一个有限自动机来匹配多个字符串。您可以将自动机转换为其等效的正则表达式,但直接使用自动机更简单(这就是算法的作用。)

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

相关文章:

python - 两个简单递归函数的大 O 表示法

python - 无法从给定格式中提取出生日期

php - 正则表达式匹配字符串 BAR,只要它之前没有出现字符串 FOO

PHP正则表达式定界符,有什么意义?

algorithm - 加权项目算法

algorithm - 证明这个递归斐波那契实现运行时间为 O(2^n)?

php - 我怎么写这个正则表达式?贪婪相关

.net - Look around 未通过 .net 提供预期结果

c - 读取单词的功能只读取每隔一个字母

python - 如何用python制作随机文本