如何删除重复的非相邻字符串

时间:2010-10-11 10:51:07

标签: python regex

给出如下所示的线条:
Blah \cite[9.1173]{Joyce:1986aa}\autocite[42]{Kenner:1970ab}\autocite[108]{Hall:1960aa} bbb.\n
我想删除\autocite的第二个(以及任何后续)事件,导致以下内容:
Blah \autocite[9.1173]{Joyce:1986aa}[42]{Kenner:1970ab}[108]{Hall:1960aa} bbb.\n

我正在努力以正则表达式表达这一点(我使用的是python 2.7 RE模块),但是,因为我不确定如何制定 “只有在\autocite后跟[…]{…}后才会删除{{1}},直到遇到空格或句号”。

2 个答案:

答案 0 :(得分:3)

正则表达式不是灵丹妙药。

l = s.split('\\autocite')
print '%s\\autocite%s' % (l[0], ''.join(l[1:]))

答案 1 :(得分:0)

如果您绝对需要正则表达式,则可以使用(?<=\\autocite)(.*?)\\autocite(.*)并替换为\1\2

但@Ignacio Vazquez-Abrams的答案更有效率。