2014-06-11 14:23 GMT+02:00 BrJohan <brjo...@gmail.com>: > For some genealogical purposes I consider using Python's re module. >... > > Now, my problem: Is there a way to decide whether any two - or more - of > those regular expressions will match the same string? > > Or, stated a little differently: > > Can it, for a pair of regular expressions be decided whether at least one > string matching both of those regular expressions, can be constructed? > -- > https://mail.python.org/mailman/listinfo/python-list
Hi, i guess, you could reuse some available generators for strings matching a given regular expression, see e.g.: http://stackoverflow.com/questions/492716/reversing-a-regular-expression-in-python/ for example a pyparsing recipe: http://stackoverflow.com/questions/492716/reversing-a-regular-expression-in-python/5006339#5006339 which might be general enough for your needs - of course, you cannot use unbound quantifiers, backreferences, etc. Then you can test for identical strings in the generated outputs - e.g. using the set(...) and its intersection method. You might also check a much more powerful regex library https://pypi.python.org/pypi/regex which, beyond other features, also supports the mentioned fuzzy matches, cf. >>> regex.findall(r"\bSm(?:ith){e<3}\b", "Smith Smithe Smyth Smythe Smijth") ['Smith', 'Smithe', 'Smyth', 'Smythe', 'Smijth'] >>> (but, of course, you will have to be careful with this feature in order to reduce false positives) hth, vbr -- https://mail.python.org/mailman/listinfo/python-list