正则表达式 – Haskell Posix中的多行匹配
发布时间:2020-12-14 06:02:29 所属栏目:百科 来源:网络整理
导读:我似乎无法在 haskell的POSIX实现上找到合适的文档. 特别是模块Text. Regex.Posix. 任何人都能指出我在字符串上使用多行匹配的正确方向吗? 一个奇怪的片段: extractToken body = body =~ "textarea[^]*id="wpTextbox1"[^]*(.*)/textarea" :: String 我正
我似乎无法在
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>" 要仅提取第一组,请使用 extractToken body = head groups where (preMatch,inMatch,postMatch,groups) = match regex body :: (String,String,[String]) regex = makeRegexOpts compExtended defaultExecOpt "<textarea[^>]*id="wpTextbox1"[^>]*>(.*)</textarea>" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |