Cookbook/Pattern matching
Introduction[edit]
Regular expressions are useful in some situations where the Data.List library is unwieldy. Posix style regular expressions are available in the core libraries, and a suite of other regular expression libraries are [also available], including PCRE and TRE-style regexes.
Bryan O'Sullivan has written a nice introduction to using the new regex libraries. This page describes the (=~) interface.
Text.Regex interface[edit]
Using the Text.Regex module, expressions can be applied with matchRegex and mkRegex with Maybe [String] results. Documentation for this module can be found on the Hackage regex-compat page.
$ ghci Prelude> :m +Text.Regex
For boolean-style (either it succeeded or failed) results:
Prelude Text.Regex> matchRegex (mkRegex "a") "aabc" Just [] Prelude Text.Regex> matchRegex (mkRegex "z") "aabc" Nothing
With capturing results in the [String]:
Prelude Text.Regex> matchRegex (mkRegex "(a)") "aabc" Just ["a"] Prelude Text.Regex> matchRegex (mkRegex "(a+)") "aabc" Just ["aa"] Prelude Text.Regex> matchRegex (mkRegex "(a)(b)") "aabc" Just ["a","b"] Prelude Text.Regex> matchRegex (mkRegex "(z)") "aabc" Nothing