ANNOUNCE: pcre-light, a light, portable regular expression library for Haskell

pcre-light A light regular expression library, using Perl 5 compatible regexes I'm pleased to announce the first release of pcre-light. This library provides a simple, efficient interface to PCRE regular expressions, via either strict ByteStrings or classical Strings. Compilation and matching of regular expressions is done via two functions: compile :: ByteString -> [PCREOption] -> Either String Regex match :: Regex -> ByteString -> [PCREExecOption] -> Maybe [ByteString] A convenience interface for 'Char8' Strings is also provided. == Examples == Although the operations by default take ByteStrings, we can avoid unnecessary 'pack' calls using GHC's support for ByteStrings literals, enabled with -XOverloadedStrings: > :m + Text.Regex.PCRE.Light > :m + Data.ByteString.Char8 > :set -XOverloadedStrings > let Right r = compile "the quick brown fox" [] > match r "the quick brown fox" [] Just ["the quick brown fox"] > match r "the quick brown FOX" [] Nothing We can also enable various matching extensions,
let Right r = compile "the quick brown fox" [caseless]
match r "the quick brown FOX" [] Just ["the quick brown FOX"]
Subpatterns, and fancy Perl regex extensions are happily supported:
let Right r = compile "^(abc){1,2}zz" [] match r "abczz" [] Just ["abczz","abc"]
Where the subpattern bound by ( ) was returned as the second element of the list.
let Right r = compile "\\w+(?=\t)" [] match r "the quick brown\t fox" [] Just ["brown"]
You can do lots of silly things with this:
let Right r = compile "^(a()+)+" [] match r "aaaa" Just ["aaaa", "a", ""]
The full set of compile and runtime PCRE extensions are supported. == Get it == * Stable tarballs, (on Hackage, of course): http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcre-light * Cabal install it! Using the new 'cabal-install', you can automatically download, build and install the package: $ cabal update $ cabal install pcre-light Downloading 'pcre-light-0.1'... Configuring pcre-light-0.1... Preprocessing library pcre-light-0.1... Building pcre-light-0.1... Registering pcre-light-0.1.. And off we go! For more information about cabal-install, see the hackage page for this excellent tool. * Darcs repository: http://code.haskell.org/~dons/code/pcre-light/ * Documentation: http://code.haskell.org/~dons/docs/pcre-light/ * Stability The library takes correctness seriously, and comes with a reasonable testsuite (with plans to greatly extend it), and code coverage data for those tests (using GHC's new -fhpc flag). You can see the test coverage results here: http://code.haskell.org/~dons/tests/pcre-light/hpc_index.html Yours in code, Don P.S. I'd like to encourage other authors to distribute code coverage results for their libraries! hpc is an invaluable tool to ensure high quality libraries for the Haskell community. P.P.S. Consider consider contributing your own light bindings to useful C libraries. The more we have, the more certain and sustainable Haskell development will be :) P.P.P.S. Thanks to #haskell for testing and advice.
participants (1)
-
Don Stewart