我正在学习re
Python 的“”部分,命名模式(?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
为什么我使用时它无法替代(?P=name)
?
以及如何正确使用?
我正在使用 Python 3.5