我想在 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
如果输出相同,则 r1
和 r2
也相同。
关于python - 检查两个 Python 正则表达式模式是否等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21398251/