正则表达式从\ cite命令中提取bibtex键

时间:2015-03-23 12:32:55

标签: regex

我正在尝试创建一个正则表达式,从tex文档中的cite命令中提取bibtex键。它应该能够将完整的乳胶文档作为输入字符串并将所有bibtex键作为匹配返回:

Blahbla document
\somecommand{test} blabla nonsense lorem ipsum \cite{key1} and \cite{key2, key3, key4}

返回

key1
key2
key3
key4

我使用https://regex101.com

提出了这个问题
\\cite\{([^\},]+)(?:,\s*([^\},]+))*\}

除了在第二个\ cite命令中只将key2和key4标识为匹配这一事实外,它才有效。

任何人都可以解释这里出了什么问题以及应该怎么做?提前谢谢!

1 个答案:

答案 0 :(得分:1)

要做连续字符串匹配,您需要使用\G锚点。

(?:\\cite\{|(?<!^)\G),?\s*([^,}]+)

OR

(?:\\cite\{|(?<!^)\G),?\s*([^,}]+)(?=[^}]*})

DEMO