Chio:   Common Lisp support for string processing
Author:   Jonathan Spingarn
 
features...
Simple string searches are described by function objects called simple-tests.
Chio has a library of routines that perform algebraic operations on simple-tests, producing new ones from old in various ways.
More complicated search descriptions are encapsulated in structures called binding-trees that also specify bindings to capture search results. These are compiled into compiled-binding-trees and this compilation, being under the user's control, can be held outside of iterative loops, thereby speeding processing and conserving resources.
Chio's simple-test-reader is a Lisp read-time macro that expands a regular expression into Lisp code that evaluates to a simple-test. Viewing output of the Lisp reader thus offers instant feedback regarding the action of a regular expression.
Though regular expressions offer convenience, their use is optional because the user is always free to write code instead. This means that the particular regular expression syntax that Chio offers does in no way limit the capabilities of Chio or dictate what a programmer is allowed to do. Indeed, the simple-test-reader is an independent module of Chio; a user could theoretically substitute another reader to achieve any desired syntax, or not use regular expressions at all and still use the rest of the Chio library.
Three macros, with-test-binds, with-test-format, and with-test-split, perform matching, substitution, and splitting operations on strings. The behavior of these macros is highly flexible, governed by numerous keyword options.
Because it is built on top of Lisp, Chio inherits all of the power of that language. It can therefore handle complex tasks easily that might be awkward in more rigid languages.
getting started...
The document, Chio: a String Processing Library for Common Lisp, tells what you need to know.
Numerous examples are included on this web site. Take a glimpse to get a feel for Chio, but for best understanding, read the document first.
Please send feedback. I would love to hear from users.