我似乎无法在
haskell的POSIX实现上找到合适的文档.
特别是模块Text. Regex.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>"