Ich versuche, eine Teilzeichenfolge zwischen den beiden Mustern zu extrahieren BB
und </p>
:
require("stringr")
str = "<notes>n <p>AA:</p>n <p>BB: word, otherword</p>n <p>Number:</p>n <p>Level: 1</p>n"
str_extract(str, "BB.*?:</p>")
Der extrahierte Teilstring sollte "word, otherword" sein, aber ich fange zu viel ein:
[1] "BB: word, otherword</p>n <p>Number:</p>"
Antworten:
2 für die Antwort № 1Vielleicht so etwas?
> gsub(".*BB: (.*?)</p>.*$", "\1", str)
# [1] "word, otherword"
2 für die Antwort № 2
Dies ist ein Job für reguläre Perl-Ausdrücke. Lookahead und Lookbehind Referenzen. Im stringr
Sie können den regulären Ausdruck in a einwickeln perl
funktionieren so:
str_extract(str, perl("(?<=BB: ).*?(?=</p>)"))
[1] "word, otherword"
Sie können dies auch mit base tun:
regmatches(str, regexpr(perl("(?<=BB: ).*?(?=</p>)"), str, perl=TRUE))
[1] "word, otherword"