2010-10-11 58 views
0

鑑於線執行以下操作:
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[…]{…},直到遇到空格或句點「。

回答

3

正則表達式不是萬能的。

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

+1不錯。想到錘子和螺絲釘。 – djna 2010-10-11 10:56:33

+0

你是對的。無法看到樹木的木材。 – urschrei 2010-10-11 11:09:31

0

如果你是絕對需要的正則表達式,你可以使用(?<=\\autocite)(.*?)\\autocite(.*)\1\2取代。

但@Ignacio巴斯克斯 - 艾布拉姆斯的答案是更好的一種效率。