Table Of Contents

Next topic

The reverb module

This Page

reverb.py

Introduction

This is the revival of a small Python module which lived once on the now abandoned Vaults of Parnassus when I entered Python programming about a decade ago. It was originally written and published by JasonHarper in 1998 on a “free for any use” license. Since then it has slowly faded from the net which I find a bit sad.

What is reverb?

reverb.py is a tiny wrapper around Pythons re module which maps regular expressions onto Python expressions for the sake of readability. The module name can be read as “re-verb(ose)”. reverb follows the Python tradition of keeping the amount of punctuation small and avoid punctuation collisions.

In reverb one writes

Optional(Digit)+"."+Required(Digit)

instead of

\d*\.\d+

to denote a pattern that matches a floating point number. The reverb reads much like a meta-language explanation of the dense and compact regexp.

From a reverb object one can fetch the regexp using the text attribute

>>> (Optional(Digit)+"."+Required(Digit)).text
'\\d*\\.\\d+'

Each reverb object translates to a regexp and it is finally the regexp which is compiled and matched against strings.

Reverb in context

I think about reverb any time I encounter a regexp learning tool but also pyparsing which has grown in popularity within the Python community and I suspect it did this for reasons not dissimilar to those intended by reverb: “avoiding line noise when writing regular expressions” in the words of Jason Harper. So I do think it fits a real need.

The only significant change I made to reverb is capitalization of names. reverb 1.0 was published when Python 1.5 came out and used identifiers like any and set which have now counterparts as builtins in Pythons standard library.

Download

reverb can be downloaded here from the Cheaseshop.