pregexp
2024-10-12
Portable regular expressions for Common Lisp
= pregexp
pregexp is a portable implementation of regular expressions
(regexps) that runs in any R5RS- or R4RS-compliant implementation
of the programming language Scheme, and in Common Lisp. The regexp
notation supported is compatible with Perl’s, and includes such
powerful directives as
- numeric quantifiers
- non-greedy quantifiers
- POSIX character classes
- non-capturing clusters (in addition to the usual capturing kind)
- selective (i.e., per-cluster) case-insensitivity
- selective space-insensitivity (with provision for comments)
- backreferences
- alternation
- backtrack pruning
- lookahead (positive and negative)
- lookbehind (positive and negative)
This is in addition to the more basic directives
familiar to all regexp users.
== For Scheme
Simply load the file `pregexp.scm` into your Scheme.
Alternatively, if your dialect allows it, you can install pregexp
as a module — consult the file
link:INSTALL.adoc[].
However you load pregexp, you will now have access to the
procedures
- `pregexp`
- `pregexp-match-positions`
- `pregexp-match`
- `pregexp-split`
- `pregexp-replace`
- `pregexp-replace*`
The use of these procedures is described fully and with examples
in the pregexp manual.
== For Common Lisp
`pregexp.lisp` is a Common Lisp implementation of the same
routines as in `pregexp.scm`, with the same behavior (modulo
transparent stuff like `nil` being the CL equivalent of `#f`).
== Documentation
The pregexp manual is at
http://ds26gte.github.io/pregexp/index.html.
❧❧❧
—Dorai Sitaram