Cookbook/Pattern matching
< Cookbook
Jump to navigation
Jump to search
Introduction
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
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