我想以 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/