小编KE *_* LI的帖子

Python 中的命名反向引用 (?P=name) 问题

我正在学习rePython 的“ ”部分,命名模式(?P=name)让我感到困惑,

当我用来re.sub()进行数字和字符的交换时,模式“ (?P=name)”不起作用,但模式“ \N”和“ \g<name>”仍然有意义。代码如下:

[IN]print(re.sub(r'(?P<digit>\d{3})-(?P<char>\w{4})', r'(?P=char)-(?P=digit)', '123-abcd'))
[OUT] (?P=char)-(?P=digit)
[IN] print(re.sub(r'(?P<digit>\d{3})-(?P<char>\w{4})', r'\2-\1', '123-abcd'))
[OUT] abcd-123
[IN] print(re.sub(r'(?P<digit>\d{3})-(?P<char>\w{4})', r'\g<char>-\g<digit>', '123-abcd'))
[OUT] abcd-123
Run Code Online (Sandbox Code Playgroud)

为什么我使用时无法进行替代(?P=name)
以及如何正确使用呢?
我正在使用Python 3.5

python regex backreference python-3.x python-re

4
推荐指数
1
解决办法
2099
查看次数

标签 统计

backreference ×1

python ×1

python-3.x ×1

python-re ×1

regex ×1