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