我想提取tex文件中引用的所有引用。下面是一个例子:
cat("...", "Some author \\cite{xxx}", "Other author \\cite{yyy}, more text \\cite{zzz}",
"...}", file = "tex", sep="\n")
tex <- readLines("tex")
预期输出为:
refs <- c("xxx","yyy","zzz")
我在grep中冒险但没有任何成功。因此,我很高兴在这里收到建议。
答案 0 :(得分:2)
您可以先检查每一行,看它是否包含cite
,然后使用sub
从引用中提取作者并返回参考:
hasCite <- grepl("\\\\cite", tex)
sub(".*\\\\cite\\{(.*?)\\}.*", "\\1", tex[hasCite])
# [1] "xxx" "yay"
更新:
如果字符串中有多个匹配项,则可以使用stringr::str_extract_all
;这里使用 regex 环顾(?<=...)
(向后看)和(?=)
(向前看)来限制模式,以便提取\\cite{}
包围的内容:
library(stringr)
unlist(str_extract_all(tex, "(?<=\\\\cite\\{)(.*?)(?=\\})"))
# [1] "xxx" "yyy" "zzz"