我正在寻找一个Haskell函数,它返回给定正则表达式的所有匹配捕获组。我已经看了Text.Regex,但是没找到相关信息。现在我在使用这个临时方法,似乎可以解决问题:
import Text.Regex
findNext :: String -> Maybe (String, String, String, [String] ) -> [ [String] ]
findNext pattern Nothing = []
findNext pattern (Just (_, _, rest, matches) ) =
case matches of
[] -> (findNext pattern res)
_ -> [matches] ++ (findNext pattern res)
where res = matchRegexAll (mkRegex pattern) rest
findAll :: String -> String -> [ [String] ]
findAll pattern str = findNext pattern (Just ("", "", str, [] ) )
结果:
findAll "x(.)x(.)" "aaaxAxaaaxBxaaaxCx"
[["A","a"],["B","a"]]
问题:
- 我在Text.Regex中错过了什么吗?
- 是否有一个Haskell正则表达式库实现了findAll函数?
=~
之外还有另一种用于正则表达式的接口。 - fuz