如何在Python中搜索并替换为sub

2024-06-17 12:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将我在latex中的所有引用从\cite{authoryear}更改为[\Citealt{authoryear}]。你知道吗

为了做到这一点,我尽力了

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

但这根本不管用。我怎样才能做到这一点?你知道吗


Tags: relatexblacitezaz0doe2013authoryear
2条回答

这个问题很久以前就有人问过了,作者可能已经不在乎了。。。但这是一个更好的答案:

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

具体而言,这考虑了几个因素:

  • 单个字符串中的多个引用=>;.*?带惰性量词
  • 转义符的正确处理\

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

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

圆括号表示组,它们按左括号出现的顺序编号。您可以使用backreferences\1引用前九个组。。。\9. 你知道吗

相关问题 更多 >