【发布时间】:2011-04-16 20:33:07
【问题描述】:
今天有人问我是否有一个库来获取字符串列表并计算最有效的正则表达式以仅匹配这些字符串。我认为它本身就是一个NP Complete problem,但我认为我们可以稍微改进一下范围。
我将如何生成和简化一个正则表达式来匹配来自我网络上所有主机的更大集合的主机子集? (知道我可能得不到最有效的正则表达式。)
第一步很简单。来自以下列表;
- appserver1.domain.tld
- appserver2.domain.tld
- appserver3.domain.tld
我可以将它们连接起来并转义到
appserver1\.domain\.tld|appserver2\.domain\.tld|appserver3\.domain\.tld
而且我知道如何手动将正则表达式简化为
appserver[123]\.domain\.tld
从那里我可以针对完整的主机列表测试该模式,并验证它是否仅与选定的 3 台主机匹配。我不知道如何自动化简化过程。是否有任何库(在 Perl、Javascript 或 C# 中)或常见做法?
谢谢
更新我得到了一些很棒的 perl 模块,但我也喜欢前端解决方案。这意味着Javascript。我四处搜索,但没有人将 perl 模块移植到 JS,我没有成功找到搜索此类库的语言。
【问题讨论】:
标签: c# javascript regex perl