regex 打印出编译Python Re的OPCODES?

v9tzhpje  于 2023-10-22  发布在  Python
关注(0)|答案(1)|浏览(155)

Python的re模块允许对给定的正则表达式模式进行一些编译。
比如说,

import re
c = re.compile('(?<=abc)def')

如何打印出表达式编译后的代码?任何有关实现细节的文档链接也会很有帮助
source code建议对某种内部VM(如PikeVM)执行此编译。此虚拟机的操作码为here

8wtpewkr

8wtpewkr1#

您可以尝试将re.DEBUG提供给flags=

import re

re.compile("(?<=abc)def", flags=re.DEBUG)

图纸:

ASSERT -1
  LITERAL 97
  LITERAL 98
  LITERAL 99
LITERAL 100
LITERAL 101
LITERAL 102

 0. INFO 4 0b0 3 3 (to 5)
 5: ASSERT 9 3 (to 15)
 8.   LITERAL 0x61 ('a')
10.   LITERAL 0x62 ('b')
12.   LITERAL 0x63 ('c')
14.   SUCCESS
15: LITERAL 0x64 ('d')
17. LITERAL 0x65 ('e')
19. LITERAL 0x66 ('f')
21. SUCCESS

相关问题