Mam następujący ciąg: "PRODUCT colgate good but not goodOKAY"
Extract ciąg wyrazów między dwoma określonych słów w R
chcę, aby wyodrębnić wszystkie słowa między PRODUCT
i OKAY
Mam następujący ciąg: "PRODUCT colgate good but not goodOKAY"
Extract ciąg wyrazów między dwoma określonych słów w R
chcę, aby wyodrębnić wszystkie słowa między PRODUCT
i OKAY
Można użyć gsub
:
vec <- "PRODUCT colgate good but not goodOKAY"
gsub(".*PRODUCT\\s*|OKAY.*", "", vec)
# [1] "colgate good but not good"
x = "PRODUCT colgate good but not goodOKAY"
library(stringr)
str_extract(string = x, pattern = perl("(?<=PRODUCT).*(?=OKAY)"))
(?<=PRODUCT)
- wygląd za meczem dla PRODUCT
dopasuj wszystko oprócz nowych linii.
(?=OKAY)
- patrz wcześniej, aby dopasować OKAY
.
Powinienem dodać, że nie potrzebujesz do tego pakietu stingr
, funkcje podstawowe sub
i gsub
działają bez zarzutu. Używam stringr, ponieważ jest to spójność składni: czy wyodrębniam, zastępuję, wykrywam itd. Nazwy funkcji są przewidywalne i zrozumiałe, a argumenty są w spójnej kolejności. Używam stringr
, ponieważ oszczędza mi to potrzebnej dokumentacji za każdym razem.
Można to zrobić z sub
:
s <- "PRODUCT colgate good but not goodOKAY"
sub(".*PRODUCT *(.*?) *OKAY.*", "\\1", s)
podając: Potrzebne są
[1] "colgate good but not good"
Brak pakietów.
Oto wizualizacja wyrażenia regularnego:
.*PRODUCT *(.*?) *OKAY.*
Można użyć funkcji rm_between
z qdapRegex opakowaniu. Bierze ciąg znaków i lewą i prawą granicę w następujący sposób:
x <- "PRODUCT colgate good but not goodOKAY"
library(qdapRegex)
rm_between(x, "PRODUCT", "OKAY", extract=TRUE)
## [[1]]
## [1] "colgate good but not good"