2017-06-26 2 views
1

Ich möchte alle in einer tex-Datei genannten Referenzen extrahieren. Im Folgenden ein Beispiel:Extrahieren von Autornamen aus der tex-Datei in R

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

Die erwartete Ausgabe wäre:

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

ich in grep ohne Erfolg gewagt. Daher würde ich mich freuen, hier Vorschläge zu erhalten.

Antwort

2

können Sie zunächst jede Zeile überprüfen, um zu sehen, ob es cite enthält, und dann den Autor Auszug aus zitieren sub und zurück Referenzen:

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

aktualisieren:

Wenn Sie mehrere Streichhölzer in der Zeichenfolge könnten Sie stringr::str_extract_all verwenden; Hier verwenden regex Blick um (?<=...) (Blick hinter) und (?=) (look ahead), um das Muster zu beschränken, so dass umgeben Inhalte von \\cite{} extrahiert werden:

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

Vielen Dank für Ihre Antwort, und Sie tatsächlich mein Beispiel aufgelöst. Aber, meine eigene Schuld, Ihre Lösung erfasst TeX-Zeilen nicht mit mehr als einer Referenz. Ich habe mein Beispiel angepasst und weitere Vorschläge dazu würden sehr geschätzt werden. – user3091668

Verwandte Themen