flo*_*sla 16 python regex backreference
在正则表达式替换模式中,反向引用看起来像\1.如果要在该反向引用后包含一个数字,这将失败,因为该数字被认为是反向引用号的一部分:
# replace all twin digits by zeroes, but retain white space in between
re.sub(r"\d(\s*)\d", r"0\10", "0 1")
>>> sre_constants.error: invalid group reference
Run Code Online (Sandbox Code Playgroud)
替换模式r"0\1 0"可以正常工作,但在失败的示例中,反向引用\1被解释为\10.
如何将数字'0'与\1之前的反向引用分开?
flo*_*sla 12
\1您可以使用命名组来解决问题,而不是使用带序列号()的反向引用:
# replace all twin digits by zeroes, but retain whitespace in between
re.sub(r"\d(?P<whitespace>\s*)\d", r"0\g<whitespace>0", "0 1")
>>> '0 0'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |