我尝试使用re模块中的.sub()函数修改字符串。更具体地说,我尝试使用组backref,但函数似乎没有注册该函数。例如:
> In [49]: s = ' STORE # 123 123 '
> In [50]: print re.sub('([0-9]+) +(\1)','(\1)',s)
STORE # 123 123
我想要它打印" STORE#123"但似乎.sub()的第一个arg没有注册,所以它只是吐出未经修改的初始字符串。我甚至检查了文档(https://docs.python.org/2/library/re.html#re.sub),但仍然无法弄清楚我做错了什么。我顺便运行Python 2.7。
感谢您的帮助!
答案 0 :(得分:1)
您应该使用:
>>> print re.sub(r'([0-9]+) +\1', r'(\1)', ' STORE # 123 123 ')
STORE # (123)
您使用r'...'
以便不必转义反斜杠。
答案 1 :(得分:0)
如果从匹配结果中删除它,您可以保留所需内容。要做到这一点,您只需将反向引用封装在前瞻(print re.sub(r'([0-9]+) +(?=\1)','',s)
后跟):
{{1}}