Python Regex:Group Backref

时间:2016-01-13 19:40:43

标签: python regex

我尝试使用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。

感谢您的帮助!

2 个答案:

答案 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}}