我想將我所有的乳膠引用從\cite{authoryear}
更改爲[\Citealt{authoryear}]
。如何用Python中的sub進行搜索和替換
要做到這一點我想
re.sub(r"\cite{[a-zA-Z0-9]}", r"[\Citealt{a-zA-Z0-9]}]", "bla bla \cite{doe2013}")
,但是這是行不通的。我怎樣才能做到這一點?
我想將我所有的乳膠引用從\cite{authoryear}
更改爲[\Citealt{authoryear}]
。如何用Python中的sub進行搜索和替換
要做到這一點我想
re.sub(r"\cite{[a-zA-Z0-9]}", r"[\Citealt{a-zA-Z0-9]}]", "bla bla \cite{doe2013}")
,但是這是行不通的。我怎樣才能做到這一點?
您可以使用反向引用。你應該看看應用re.sub文檔http://docs.python.org/2/library/re.html#re.sub我創建了一個小例子:
re.sub(r'\cite{(.*)}', r'[\Citealt{\1}]', '\cite{123}')
括號表示羣體,他們由在其中出現左括號的順序編號。您可以使用反向引用\ 1 ... \ 9來引用前九個組。
其實這個答案有幾個問題:當多個'\ cite {}'存在時它不起作用,並且它不能正確處理'\'。 –
問題早就已經問及作者可能不關心它了......但是這是AFAIK更好的回答這個問題:
re.sub(r'\\cite{(.*?)}', r'[\\Citealt{\1}]', '\\cite{123} -- \\cite{234}')
具體而言,這考慮到幾個元素:在一個字符串=>.*?
與惰性限定符
\
我嘗試過're.sub(r'\ cite {(。*)}',r'[\ Citealt {\ 1}]','\ cite {123}')'但它仍然給出\\ [\\引用{123}]。如何處理這個反斜槓? – user2433705
那是因爲它應該是'r'\\ cite ...'。用雙'\\'。 –