3

我想将我在乳胶中的所有引用从 更改\cite{authoryear}[\Citealt{authoryear}].

为此,我尝试了

re.sub(r"\cite{[a-zA-Z0-9]}", r"[\Citealt{a-zA-Z0-9]}]", "bla bla \cite{doe2013}")

但这根本不起作用。我怎样才能做到这一点?

4

2 回答 2

1

您可以使用反向引用。您应该查看 re.sub 文档http://docs.python.org/2/library/re.html#re.sub我创建了一个小示例:

re.sub(r'\cite{(.*)}', r'[\Citealt{\1}]', '\cite{123}')

括号表示组,它们按左括号出现的顺序编号。您可以使用反向引用\1 ... \9 来引用前九个组。

于 2013-05-29T19:09:20.453 回答
0

很久以前就提出过问题,作者可能不再关心它了……但这是 AFAIK 对这个问题的更好回答:

re.sub(r'\\cite{(.*?)}', r'[\\Citealt{\1}]', '\\cite{123} -- \\cite{234}')

特别是,这考虑了几个要素:

  • 单个字符串中的多个引用 =>.*?带有惰性量词
  • 正确处理转义字符\
于 2018-02-25T14:00:06.077 回答