a regex DSL for those who prefer verbose composable regexes to terse ones
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/net/cgrand
README.textile
epl-v10.html
project.clj
syntax.html

README.textile

net.cgrand.regex is a Clojure notation (DSL) for regexes.

Regexes are already a DSL of their own but a write-only DSL.

This DSL allows to reuse regexes or parts of them and also adds support for named groups.

This project started as a toy/lab for the DSL course at Conj Labs Brussels back in June 2010.

Example

  (def datestamp-re
    (let [d {\0 \9}]
      (regex [d d d d :as :year] \- [d d :as :month] \- [d d :as :day])))
      
  regex=> (exec datestamp-re "2007-10-23")
  {:day "23", :month "10", :year "2007", nil "2007-10-23"}
  regex=> (exec datestamp-re "20X7-10-23")
  nil

License

Copyright © 2010-2013 Christophe Grand

Distributed under the Eclipse Public License, the same as Clojure.