正则表达式 – Haskell Posix中的多行匹配

前端之家收集整理的这篇文章主要介绍了正则表达式 – Haskell Posix中的多行匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我似乎无法在 haskell的POSIX实现上找到合适的文档.
特别是模块Text. Regex.Posix.

任何人都能指出我在字符串上使用多行匹配的正确方向吗?

一个奇怪的片段:

> extractToken body = body =~ "<textarea[^>]*id=\"wpTextBox1\"[^>]*>(.*)</textarea>" :: String

我正在尝试提取维基百科页面的来源,但是当涉及多行时,这种方法显然会失败.

解决方法

您可能需要导入Text.Regex.Base.RegexLike以访问makeRegexOpts和朋友.

extractToken body = match regex body where
    regex = makeRegexOpts (defaultCompOpt - compNewline) defaultExecOpt
              "<textarea[^>]*id=\"wpTextBox1\"[^>]*>(.*)</textarea>"

好吧,因为Text.Regex.Posix的defaultCompOpt = compExtended compNewline,它的效果

extractToken body = match regex body where
    regex = makeRegexOpts compExtended defaultExecOpt
              "<textarea[^>]*id=\"wpTextBox1\"[^>]*>(.*)</textarea>"

要仅提取第一组,请使用RegexLike的其他实例之一.一种可能性是

extractToken body = head groups where
    (preMatch,inMatch,postMatch,groups) =
        match regex body :: (String,String,[String])
    regex = makeRegexOpts compExtended defaultExecOpt
              "<textarea[^>]*id=\"wpTextBox1\"[^>]*>(.*)</textarea>"

猜你在找的正则表达式相关文章