为了掌握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返回正确的结果而不是$1?re.sub这样做是否正确?
$1
re.sub
只需使用\1代替$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'...')用于正则表达式。它不是强制性的,但消除了转义反斜杠的需要,可以说使代码更具可读性。
r'...'