/ / Tous les matchs de regex en Haskell - regex, haskell

Tous les matchs de regex dans Haskell - regex, haskell

Selon un certain nombre de tutoriels (y compris Real World Haskell), vous pouvez utiliser ghci pour effectuer les opérations suivantes:

ghci > :m Text.Regex.Posix
ghci > "foo foo foo" =~ "foo" :: [String]
["foo","foo","foo"]

Pourtant, lorsque je tente cela, il cède

No instance for (RegexContext Regex [Char] [String])
arising from a use of `=~"
Possible fix:
add an instance declaration for
(RegexContext Regex [Char] [String])
In the expression: "abc" =~ "ab" :: [String]
In an equation for `it": it = "abc" =~ "ab" :: [String]

Quelle est la bonne façon d'obtenir une liste de tous les matchs dans haskell?

Réponses:

24 pour la réponse № 1

Les bibliothèques de regex peuvent être un peu déroutantes avec leurs types de retour surchargés, mais pour obtenir toutes les correspondances, il vous suffit de vous assurer que le type de retour est correct. AllTextMatches, par exemple:

Prelude> :m + Text.Regex.Posix
Prelude Text.Regex.Posix> getAllTextMatches $ "foo foo foo" =~ "foo" :: [String]
["foo","foo","foo"]