【问题标题】:Text.Regex.Posix's =~ operator cannot get the return value in some patternsText.Regex.Posix 的 =~ 运算符在某些模式下无法获取返回值
【发布时间】:2020-02-05 06:52:28
【问题描述】:

Text.Regex.Posix 的 =~ 运算符在某些模式下无法获取返回值。

例如,

> import Text.Regex.Posix
> "y2019m10d08" =~ "y([0-9]{4})?m([0-9]{1,2})?d([0-9]{1,2})?" :: Bool 
True
> "y2019m10d08" =~ "y([0-9]{4})?m([0-9]{1,2})?d([0-9]{1,2})?" :: Int 
1
> "y2019m10d08" =~ "y([0-9]{4})?m([0-9]{1,2})?d([0-9]{1,2})?" :: [[String]]

我的预期

[["y2019m10d08","2019","10","08"]]

但是在最后一个条目之后,计算似乎并没有结束。

为什么?

我的环境:

  • Windows 10
  • GHC 8.6.5
  • regex-base-0.93.2
  • regex-posix-0.95.2

【问题讨论】:

  • 它可以在 macOS 10.14.6 和 Stackage LTS 14.7(GHC 8.6.5,regex-base-0.93.2,regex-posix-0.95.2)上正常工作。
  • 它也可以在 Archlinux 上使用相同的 GHC 和包版本按预期工作。我立刻得到了答案。

标签: regex haskell posix


【解决方案1】:

考虑到 cmets 和包的性质,这很可能是由于您的特定系统上提供 RegEx 逻辑的底层 C 库中的错误。

这不是针对此软件包报告的第一个特定于 Windows 的错误(请参阅 herehere)。您可以在regex-posix 存储库上打开一个问题,看看他们是否能找到罪魁祸首。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2015-01-28
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    相关资源
    最近更新 更多