How to print all expressions that match a regular expression

hzhuo1 at gmail.com hzhuo1 at gmail.com
Mon Feb 8 06:17:59 CET 2010


>
> Please check out this example on the pyparsing wiki, invRegex.py:http://pyparsing.wikispaces.com/file/view/invRegex.py.  This code
> implements a generator that returns successive matching strings for
> the given regex.  Running it, I see that you actually have a typo in
> your example.
>
> >>> print list(invert("[1|2|3]{2}"))
>
> ['11', '1|', '12', '13', '|1', '||', '|2', '|3', '21', '2|', '22',
> '23', '31', '3|', '32', '33']
>
> I think you meant either "[123]{2}" or "(1|2|3){2}".
>
> >>> print list(invert("[123]{2}"))
>
> ['11', '12', '13', '21', '22', '23', '31', '32', '33']
>
> >>> print list(invert("(1|2|3){2}"))
>
> ['11', '12', '13', '21', '22', '23', '31', '32', '33']
>
> Of course, as other posters have pointed out, this inverter does not
> accept regexen with unbounded multiple characters '+' or '*', but '?'
> and "{min,max}" notation will work.  Even '.' is supported, although
> this can generate a large number of return values.
>
> Of course, you'll also have to install pyparsing to get this to work.
>
> -- Paul


Hi Paul,

Thanks very much. This is exactly what I need now. I will check this
function.

Zhuo




More information about the Python-list mailing list