【发布时间】:2014-02-06 07:20:51
【问题描述】:
我想匹配具有公共前缀 (/files) 但只有两个特定目录 - 图像和视频 - 在其下的 URL。我可以为此想到两个正则表达式:
/files/(images/.*|videos/.*)
和
/files/(image|video)s/.*
我有两个问题:
- 从性能角度来看,哪个更好?我的猜测是第二个,因为它的 DFA 的状态数会更少。
- 是否有一种通用编程语言,其内置的正则表达式编译器会将给定的正则表达式简化为最小 DFA?
性能对我很重要,因为我将使用它来匹配数十亿个字符串。所以,任何一点点的改进对我来说也很重要。
【问题讨论】:
-
@nhahtdh - 感谢您提及这一点。我知道差异和事实。我只提到了 DFA,因为 NFA 至少在理论上等同于某些 DFA。
标签: regex