I want to write a regex in re.VERBOSE
mode, but I'm not confident that I'll add the verbose part without error.
I remember that, theoretically, the equivalence of two regexes (without backreferences, at least) can be found by generating their automata and trying to find a graph bijection. But there's no instance method I can see for comparing regexes.
Is there a way to either generate the automaton of a regex or directly compare them, preferably with the standard library?
(I've already decided on a different solution to my problem, but this is still of interest to me.)
You can use the undocumented re.DEBUG
feature:
>>> r1 = re.compile("foo[bar]baz", re.DEBUG)
literal 102
literal 111
literal 111
in
literal 98
literal 97
literal 114
literal 98
literal 97
literal 122
>>> r2 = re.compile("""foo # foo!
... [bar] # b or a or r!
... baz # baz!""", re.VERBOSE|re.DEBUG)
literal 102
literal 111
literal 111
in
literal 98
literal 97
literal 114
literal 98
literal 97
literal 122
If the output is identical, r1
and r2
are identical as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With