> > 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 -- http://mail.python.org/mailman/listinfo/python-list