6
我正在尋找一個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的東西嗎?
- 是否有一個實現findAll函數的Haskell正則表達式庫?
我不知道,有一個不同於'=〜'的界面,以便... – fuz
@FUZxxl好的正則表達式的複數形式。我真的笑了。正則表達式,regicis,regici,regicem,o正則表達式,regice ...這是常見的用法嗎? – Hyperboreus
@Hyperboreus我從索引(索引)中得出它,儘管它似乎不是正則表達式的常見覆數。 – fuz