2017-06-26 6 views
1

texファイルに引用されているすべての参考文献を抽出したいと思います。下記の実施例:Texファイルから著者名を抽出するR

cat("...", "Some author \\cite{xxx}", "Other author \\cite{yyy}, more text \\cite{zzz}", 
     "...}", file = "tex", sep="\n") 
tex <- readLines("tex") 

予想される出力は次のようになります。私は成功せず、grepの中であえて

refs <- c("xxx","yyy","zzz") 

。したがって、私はここで提案を受けることがうれしいです。

答えて

2

あなたは、まずそれがciteが含まれているかどうかを確認するために、それぞれの行を確認し、subと後方参照使用して引用から著者を抽出することができます:あなたは複数の一致がある場合

を:更新

hasCite <- grepl("\\\\cite", tex) 
sub(".*\\\\cite\\{(.*?)\\}.*", "\\1", tex[hasCite]) 
# [1] "xxx" "yay" 

を文字列にはstringr::str_extract_allを使用できます。ここで\\cite{}に囲まれた内容が抽出されるようにパターンを制限する(先読み)(?<=...)(背後に見える)と(?=)周り正規表現外観を使用します。

library(stringr) 
unlist(str_extract_all(tex, "(?<=\\\\cite\\{)(.*?)(?=\\})")) 
# [1] "xxx" "yyy" "zzz" 
+0

は、あなたの答えをありがとう、あなたは実際に私の例を解決しました。しかし、私自身のせいで、あなたの解決策はTeXの行を複数の参照で捕捉しません。私は私の例を適応させ、それに対するさらなる示唆は非常に高く評価されるだろう。 – user3091668

関連する問題