python - 澄清此 Python 正则表达式和调试信息

标签 python regex python-2.7

>>> rr = re.compile(u"[\24C2]+", re.DEBUG)
max_repeat 1 4294967295
  in
    literal 20
    literal 67
    literal 50

我错误地在上面的正则表达式中输入了 \24C2,而不是 \u24C2。在调试时,我试图理解调试输出。在上面的输出中,literal 20literal 67literal 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/

相关文章:

java - 如何将 Map<String,String> 更改为 Map<String,Ratio> ,比率为 x/y

java - 正则表达式问题 Java

python - 多个参数 psycopg2 where 子句 - 语法错误

python - 如何计算两个给定日期之间的天数

python - 风车属性错误: 'module' object has no attribute 'settings'

python - 在 python 3.1 中编辑单个 .txt 行

javascript - 使用正则表达式搜索字符串,并用数据替换内容

python - 在现有图表之上绘图 Python Matplotlib

python - 使用不同的用户代理和 IP 地址抓取不同的 URL

python - 如何根据列的值更新列值及其相应的索引?