我想在re.VERBOSE
模式下编写一个正则表达式,但我不相信我会毫无错误地添加详细部分。
我记得,从理论上讲,两个正则表达式的等价性(至少没有反向引用)可以通过生成自动机并尝试查找图表双射来找到。但是我没有看到用于比较正则表达式的实例方法。
有没有办法生成正则表达式的自动机或直接比较它们,最好是标准库?
(我已经决定对我的问题采用不同的解决方案,但我仍然感兴趣。)
答案 0 :(得分:6)
您可以使用未记录的re.DEBUG
功能:
>>> 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
如果输出相同,r1
和r2
也相同。