2017-11-30 4 views
-1

Ich habe Schwierigkeiten, eine Lösung zu finden, um den Text aus diesem PDF-Dokument zu extrahieren, das ich gerade verarbeite.Extrahieren von Text zwischen einem bestimmten Bereich

Der Text sieht wie folgt aus:

"* text text text\n text text text.\n  * text text text text text text.\n" 

Ich versuche, mit den folgenden, als separate Werte in einem Vektor, um am Ende:

"* text text text\n text text text." 
"* text text text text text text." 

ich kein Begrenzer laufen auf \n, und wenn ich versuche, ein Trennzeichen bis zum nächsten Punkt auszuführen, schlägt es fehl. Wie ich es verstehe, muss ich den Bereich zwischen zwei Kugeln begrenzen und muss die Länge bei der letzten \n erstellen und ich bin nur nicht sicher, wie das geht.

Dies ist die regex Abfrage, die ich jetzt haben:

"\\* (.)*\n" 
+0

Sind '\ n 'wörtliche oder sind sie Zeichen Newline passend? – ctwheels

+0

Sie sind neue Zeilenzeichen, aber es ist ein Textdokument, also gehe ich davon aus, dass es dieselben behandelt. – Hanna

+0

Split auf '\ s + (? = \ *)' – ctwheels

Antwort

1

Sie strsplit verwenden können:

string = "* text text text\n text text text.\n  * text text text text text text.\n" 

unlist(strsplit(string, "\n(\\s{2,}|$)")) 
# [1] "* text text text\n text text text." "* text text text text text text." 

Eine weitere Option ist mit regexstr_extract von stringr Einwickeln der Regex zu verwenden und die dotall Verwendung Option:

library(stringr) 

unlist(str_extract_all(string, regex("\\*.+?\\.", dotall = TRUE))) 
# [1] "* text text text\n text text text." "* text text text text text text." 
Hinweis

:

  • Mit dotall=TRUE, . wird nun auch \n entsprechen.

  • ? in .+? faul ermöglicht

Verwandte Themen