首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个正则表达式合并为一个

将多个正则表达式合并为一个
EN

Stack Overflow用户
提问于 2009-12-11 15:22:32
回答 4查看 2.7K关注 0票数 7

我有几个正则表达式(实际上有几千个),我必须检查一个字符串是否与这些正则表达式匹配。它不是很有效,所以我想合并所有这些正则表达式作为一个单一的正则表达式。

例如,如果有以下正则表达式:

  • ‘'foo *bar’
  • ‘'foo *zip’
  • “'zap *bar”

我想得到类似于'foo *(bar\zip)\zap *bar‘之类的东西。

有什么算法、库或工具可以这样做吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-11 15:28:09

您可以使用或(|) (以及字符串开头/结尾的锚)连接正则表达式。

大多数好的regex库在从regex构建其有限状态自动机之后都会优化它。例如,PCRE就是这样做的。

这一步通常处理你的优化问题。它们应用了您必须“手工”完成的大多数转换。

票数 7
EN

Stack Overflow用户

发布于 2009-12-11 15:31:22

理论上,正则表达式是一种有限状态自动机,因此它们可以合并和最小化。您可以将作为一个起点。

不过,要小心,这可能不是最正确的答案。为什么要处理几千个正则表达式?我只能弄清楚这件事的要害。也许您应该考虑编写一个解析器和一个语法--非常容易完成(而且语法无论如何都比regexps更强大)。

票数 2
EN

Stack Overflow用户

发布于 2009-12-11 15:24:42

我无法想象,即使可能的话,结果的正则表达式会更有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1888765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档