0

我认为这种情况不同,我有一个词,我有大约 100 个正则表达式。我想检查它通过的是哪个正则表达式?如何以优化的方式做到这一点?

4

1 回答 1

0

最有效的方法是将所有这些正则表达式组合成确定性有限自动机(有限状态机)。然后通过该有限状态机运行字符串。

Michael Sipser 的计算理论导论解释了如何做到这一点。它相当复杂,因此参考了这本书。

手动构建 DFA 后,您可以在代码中实现它。

有一些工具可以为您做到这一点,例如flex。flex 将正则表达式作为输入并将 DFA 生成为 .c 文件,然后您可以在项目中使用该文件。您可以将 flex 配置为返回一个标记以指示匹配哪个正则表达式。

flex 是一个 unix 工具,是 OS X 10.8 的一部分。

于 2013-08-28T09:13:32.720 回答