Tutorial, tests and example programs for regex

Stackage Nightly 2017-03-29:
Latest on Hackage:
BSD3 licensed by Chris Dornan
Maintained by Chris Dornan

Module documentation for

There are no documented modules for this package.


regex is a regular expression toolkit for regex-base with:

  • text-replacement operations with named captures;
  • special datatypes for matches and captures;
  • compile-time checking of RE syntax;
  • a unified means of controlling case-sensitivity and multi-line options;
  • high-level AWK-like tools for building text processing apps;
  • the option of using match operators with reduced polymorphism on the text and/or result types;
  • regular expression macros including:
    • a number of useful RE macros;
    • a test bench for testing and documenting new macro environments;
  • built-in support for the TDFA and PCRE backends;
  • comprehensive documentation and copious examples.

See the About page for details.

regex and regex-examples

The library and tutorial, tests and examples have been split across two packages:

  • the regex package contains the regex library with the Posix TDFA back end
  • the regex-with-pcre library package contains the extra modules needed for the PCRE back end
  • the regex-examples package contains the tutorial, tests and example programs.

Road Map

    ☒  2017-01-26 v0.0.0.1 Pre-release (I)

    ☒  2017-01-30 v0.0.0.2 Pre-release (II)

    ☒  2017-02-18 v0.1.0.0 Proposed core API with presentable Haddocks

    ☒  2017-02-19 v0.2.0.0 Package split into regex and regex-examples

    ☒  2017-02-20 v0.2.0.1 Remove library from regex-examples

    ☒  2017-02-21 v0.2.0.2 Fix tests for Hackage

    ☒  2017-02-21 v0.2.0.3 Tweak README/index layout

    ☒  2017-02-22 v0.2.0.4 Repair re-gen-modules-test for Windows

    ☒  2017-02-26 v0.3.0.0 API adjustments

    ☒  2017-03-05 v0.5.0.0 Ready for review: API, tutorials and examples finalized

    ☒  2017-03-13 v0.6.0.0 Split out PCRE

    ☒  2017-03-13 v0.6.0.1 Fix .travis.yml release-stack script

    ☒  2017-03-15 v0.7.0.0 Better organization of API

    ☒  2017-03-16 v0.8.0.0 Tidy up the API

    ☒  2017-03-24 v0.9.0.0 Finish tidying up the API, Add type-safe replacement templates and exploit TemplateHaskellQuotes

    ☒  2017-03-27 v0.10.0.2 Tweak Templates, Fix release scripts and update Haddocks commentary

    ☒  2017-03-28 v0.10.0.3 Upgrade to LTS 8.6 and Improve Haddocks for Text.RE.{TDFA,PCRE}

    ☐  2017-03-31 v1.0.0.0 First stable release

    ☐  2017-08-31 v2.0.0.0 Fast text replacement with benchmarks

See the Roadmap page for details.

The regex blog

Check out the regex blog for news articles and discussion concerning all things regex.

Build Status

Hackage BSD3 License Un*x build Windows build Coverage

See build status page for details.

Installing the Package

The package can be easily installed with cabal or stack on GHC-8.0, 7.10 or 7.8 for the above platforms. See the Installation page for details.

The Tutorial Tests and Examples

See the Tutorial page and Examples page for details.

Helping Out

If you have any feedback or suggestion then please drop us a line.

    t @hregex\n     e\n     w

The Contact page has more details.


The Haddocks can be found at

The Macro Tables

The macro environments are an important part of the package and are documented here.

The Directory

A handy overview of the domain can be found here.

The Changelog

The changelog is posted here.

The Authors

This library was written and is currently maintained by Chris Dornan aka @cdornan


-*-change-log-*- Chris Dornan <> 2017-03-28
* Update to LTS-8.6 (#95)
* Improve Haddocks for Text.RE.{TDFA,PCRE} (#94) Chris Dornan <> 2017-03-27
* Constrain the types of the template quasi quoters (#86)
* Add escape methods to IsRegex (#87)
* Better Haddock Commentary (#90)
* Better release-testing scripts (#91)
* Make travis stack-release tests advisory (#92) Chris Dornan <> 2017-03-26
Withdrawn Chris Dornan <> 2017-03-25
Withdrawn Chris Dornan <> 2017-03-23
* Flip the order of the arguments to replace (#78)
* Add type-safe replacement templates (#60)
* Finish tidying up the API (#80)
* Make `regex` compatible w/ TH-less GHCs (#70)
* Declare extensions the compiler must support (#83)
* Fix curl for AppVeyor build (#79)
* Fix AppVeyor badge (#81)
* Remove QQ from code coverage stats (#82)
* Rename Options, Context and Replace methods (#84) Chris Dornan <> 2017-03-16
* Tidy up the API after recent reorganization (#76) Chris Dornan <> 2017-03-15
* Fix and extend Replace class (#74)
* Better package organisation (#73)
* Generalise sed' in progress (#72)
* compileRegex to take just a string (#68)
* Fix comment reference in Text.RE.PCRE in progress (#66) Chris Dornan <> 2017-03-13
* Fix .travis.yml release-stack script (#67) Chris Dornan <> 2017-03-13
* Split out rexex-with-pcre package (#65) Chris Dornan <> 2017-03-05
* Fix inter-operation of =~ & =~~ and named captures (#55)
* Add escaping functions (#37)
* Test Hackage release tarballs on Travis CI (#51)
* Fix up template replace ordinals (#52)
* Complete the web site (#39)
* Complete the Tutorial, Tests and Examples (#38)
* Complete narrative in literate modules (#8) Chris Dornan <> 2017-02-26
* Clean up API to use camelCase conventions
* Use -Werror in development and testing, -Warn for Hackage
* Integrate the regex blog
* Better presentation of ghci tryouts in the Tutorial
* Various minor README upgrades and fixes Chris Dornan <> 2017-02-22
* Repair re-gen-modules-test for Windows Chris Dornan <> 2017-02-21
* README/index layout tweak Chris Dornan <> 2017-02-21
* Fix re-gen-modules-test for Hackage (#45)
* Minor style tweks to README/index Chris Dornan <> 2017-02-20
* remove library from regex-examples (#43) Chris Dornan <> 2017-02-19
* Split off the tutorial tests and examples into regex-examples,
leaving just the library in regex Chris Dornan <> 2017-02-18
* Cabal file generated from a DRY template
* Library dependencies minimised, test depndencies moved into
* A proper static website generated by 're-prep all'
* README/sidebar Badges are a static record of current release
with links to a live build-status reporting on HEAD
* Added !$, !$?, !$$ and !$$? alternatives for looking up captures
in a Match
* Text.RE.Parsers now generate Text where they were generating String
* %nat, %int, %frac and %hex get their new names Chris Dornan <> 2017-01-30
* Fix for Windows
* Remove hsyslog dependency
* Establish Travis CI, AppVeyor and integrations
* Fix time parser to use Fixed arithmetic
* Miscelaneous minor adjustments Chris Dornan <> 2017-01-26
* First public release
comments powered byDisqus