一尘不染

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

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)$

但这对于大量数据而言会变得很大,并且我们试图限制其长度。

目前,我们手动编写正则表达式,但这伸缩性不是很好,也不是任何人花费时间的好方法。是否有一种更自动化的方法来分解源数据,以提供与所有源值匹配的长度最佳的正则表达式?


阅读 186

收藏
2020-07-28

共1个答案

一尘不染

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

2020-07-28