简单的正则expression式replace使用正则expression式compat在Windows上崩溃

在Windows上使用GHC时,以下代码崩溃。 它在Linux上完美运行。

这是否有意义或有一个错误?

module Main where import qualified Text.Regex as Re -- from regex-compat import Debug.Trace main :: IO () main = do putStr $ cleanWord "jan" putStr $ cleanWord "dec" putStr $ cleanWord "jun" -- crashes here cleanWord :: String -> String cleanWord word_ = let word = trace (show word_) word_ in let re = Re.mkRegexWithOpts "(jun|jul|aug|sep|oct|nov|dec)" True False in Re.subRegex re word "" 

一些额外的细节

  1. 我正在stackbuild设
  2. 它在两个GHCi崩溃,并运行编译的可执行文件
  3. 我试图启用分析,但似乎无法弄清楚如何得到这个正常工作。

在这种情况下混洗正则表达式避免了这个bug。

这现在对我来说很好

 let re = Re.mkRegexWithOpts "(jul|aug|sep|oct|jun|nov|dec)" True False in 

即移动jun到正则表达式的结尾。 不是特别满意,但它的工作,这意味着我可以继续。

@ Zeta的评论表明,这是一个基础库的错误

这是一个错误,可能是在正则表达式中,由于它在1994年包含BSD正则表达式库的差异。在sslow中,无效内存地址(-1(%rdx),rdx = 0)将被访问。