regex - Haskell中正则表达式的所有匹配项

标签 regex haskell

根据一些教程(包括 Real World Haskell)一个可以,使用 ghci 执行以下操作

ghci > :m Text.Regex.Posix
ghci > "foo foo foo" =~ "foo" :: [String]
["foo","foo","foo"]

然而,当我尝试这样做时,它会产生
No instance for (RegexContext Regex [Char] [String])
  arising from a use of `=~'
Possible fix:
  add an instance declaration for
  (RegexContext Regex [Char] [String])
In the expression: "abc" =~ "ab" :: [String]
In an equation for `it': it = "abc" =~ "ab" :: [String]

在haskell中获取所有匹配项列表的正确方法是什么?

最佳答案

正则表达式库可能与其重载的返回类型有些混淆,但要获得所有匹配项,您只需确保返回类型为 AllTextMatches , 例如:

Prelude> :m + Text.Regex.Posix
Prelude Text.Regex.Posix> getAllTextMatches $ "foo foo foo" =~ "foo" :: [String]
["foo","foo","foo"]

关于regex - Haskell中正则表达式的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049705/

相关文章:

Haskell ' 符号有什么作用?

haskell - 如何避免哈姆雷特模板中标签(链接)后的空格?

regex - 正则表达式在 ios11 中不起作用,仅在 ios10 中正常工作

javascript - 正则表达式检查 [0-6] 之间的简单数字

javascript - 是否可以构造一个匹配 Grapheme Cluster Break=Extend 的\p JavaScript 正则表达式

haskell - 可折叠和幺半群类型

class - 以通用方式作为实例的一组函数

java - 正则表达式仅验证 0 值。要验证的单个 0 值

javascript - 使用 javascript 正则表达式从日期字符串中检索年份

haskell - 为什么使用 -O 时这个 Haskell 代码运行得更慢?