>>> rr = re.compile(u"[\24C2]+", re.DEBUG)
max_repeat 1 4294967295
in
literal 20
literal 67
literal 50
我错误地在上面的正则表达式中输入了 \24C2
,而不是 \u24C2
。在调试时,我试图理解调试输出。在上面的输出中,literal 20
、literal 67
和 literal 50
是什么意思?他们从哪里来?
最佳答案
文字来自指定正则表达式模式中指定范围内的字符(或 unicode 字符串的 unicode 代码点的整数值)的序数表示形式。
>>> chr(20)
'\x14'
>>> chr(67)
'C'
>>> chr(50)
'2'
如果您对为什么有 '\x14'
感到困惑,它来自 '\24'
,它是整数 的八进制表示形式20
,或十六进制0x14
。
>>> '\24'
'\x14'
将其更正为您所说的最初想做的事情:
>>> rr = re.compile(u"[\u24C2]+", re.DEBUG)
max_repeat 1 4294967295
literal 9410
现在只有一个文字 9410 或 unicode 代码点的整数表示形式可以匹配。
关于python - 澄清此 Python 正则表达式和调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273172/