将NSString与一堆正则表达式进行比较

时间:2013-08-28 05:10:20

标签: objective-c regex nsregularexpression

这个案例不同我想,我有一个词,我和我有100个正则表达式。我想查看它正在传递哪个正则表达式?如何以优化的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

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

Michael Sipser's Introduction to the Theory of Computation解释了如何执行此操作。这是相当复杂的,因此是对本书的参考。

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

有些工具可以为您执行此操作,例如flex。 flex将正则表达式作为输入,并将DFA生成为.c文件,然后您可以在项目中使用该文件。您可以配置flex以返回令牌以指示匹配的正则表达式。

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