Python re.sub用匹配的内容替换

发布于 2021-01-29 14:10:33

为了掌握Python中的正则表达式,我试图输出一些在URL中突出显示的HTML。我的输入是

images/:id/size

我的输出应该是

images/<span>:id</span>/size

如果我用Java语言执行此操作

method = 'images/:id/size';
method = method.replace(/\:([a-z]+)/, '<span>$1</span>')
alert(method)

我得到了期望的结果,但是如果我在Python中这样做

>>> method = 'images/:id/huge'
>>> re.sub('\:([a-z]+)', '<span>$1</span>', method)
'images/<span>$1</span>/huge'

我没有,如何让Python返回正确的结果而不是$1re.sub这样做是否正确?

关注者
0
被浏览
139
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    只需使用\1代替$1

    In [1]: import re
    
    In [2]: method = 'images/:id/huge'
    
    In [3]: re.sub(r'(:[a-z]+)', r'<span>\1</span>', method)
    Out[3]: 'images/<span>:id</span>/huge'
    

    另请注意,将原始字符串r'...')用于正则表达式。它不是强制性的,但消除了转义反斜杠的需要,可以说使代码更具可读性。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看