Regex 从\cite命令中提取bibtex键的正则表达式
我试图创建一个正则表达式,它从tex文档中的cite命令中提取bibtex键。它应该能够将完整的latex文档作为输入字符串,并将所有bibtex键作为匹配项返回:Regex 从\cite命令中提取bibtex键的正则表达式,regex,Regex,我试图创建一个正则表达式,它从tex文档中的cite命令中提取bibtex键。它应该能够将完整的latex文档作为输入字符串,并将所有bibtex键作为匹配项返回: Blahbla document \somecommand{test} blabla nonsense lorem ipsum \cite{key1} and \cite{key2, key3, key4} 返回 key1 key2 key3 key4 我是用以下方法得出这个结论的: 它可以工作,除了在第二个\cite命令中只有
Blahbla document
\somecommand{test} blabla nonsense lorem ipsum \cite{key1} and \cite{key2, key3, key4}
返回
key1
key2
key3
key4
我是用以下方法得出这个结论的:
它可以工作,除了在第二个\cite命令中只有key2和key4被标识为匹配之外
谁能解释一下这里出了什么问题以及应该如何做?提前谢谢 要进行连续字符串匹配,需要使用
\G
锚定
(?:\\cite\{|(?<!^)\G),?\s*([^,}]+)
(?:\\cite\{124;)(?)?
或
(?:\\cite\{124;)(?)?
因为*
是贪婪的,它尽可能匹配所有字符。对不起,我应该提到我使用的是python。在这种情况下,两种解决方案都失败了……是什么让python的行为不同呢?@jkokokian总是包含您首先运行的lang的标记。re模块不支持\G
锚。您不需要o使用正则表达式模块。
(?:\\cite\{|(?<!^)\G),?\s*([^,}]+)
(?:\\cite\{|(?<!^)\G),?\s*([^,}]+)(?=[^}]*})