我想将我所有的乳胶引用从\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 ...'。用双'\\'。 –