Haskell:我应该编译正则表达式吗?

时间:2012-03-11 04:07:58

标签: regex haskell

我的冲动是说是的,特别是如果我在多个代码位置使用相同的正则表达式,但this article表示该库将为我缓存编译(我甚至不确定它是如何的会这样做:

  

通常不需要编译正则表达式模式。模式将在第一次使用时进行编译,并且您的Haskell运行时应该为您记住编译的表示。

2 个答案:

答案 0 :(得分:5)

如果重用正则表达式,则值得使用RegexMaker类型类来定义“已编译”的正则表达式。它能够采用其他选项,并能够在您选择的Monad中报告编译失败。

要使用“已编译”表单,您可以使用RegexLike中的'match'或'matchM',它可以提供等同于=〜或==〜运算符。

答案 1 :(得分:5)

GHC(截至7.8.4 / regex-tdfa-1.2.0)不会记忆与(=~)(=~~)匹配的正则表达式。我发现使用具有大量潜在匹配的compile and execute可以提高性能。

  1. compile and execute

  2. (=~)