Извлечение текста после символа и первого не-слова char в r - PullRequest
1 голос
/ 11 апреля 2020

Как мне извлечь текст между первым @ и пробелом? Я упомянул мой код ниже. В конце концов он извлекает все слова @, но я просто хочу, чтобы сначала был текст @.

text

@pisa, what's up?
@italy @spain we're praying for you.

идеальный результат

pisa
italy

мой код

regex <- "@([A-Za-z]+[A-Za-z0-9])"

words <- str_extract_all(text, regex)

print(words)

вывод

@pisa
@italy @spain 

1 Ответ

1 голос
/ 11 апреля 2020

Мы можем использовать регулярное выражение в качестве регулярного выражения, то есть, чтобы соответствовать слову, сопровождаемому символом @

library(stringr)
str_extract(text, "(?<=@)\\w+")
#[1] "pisa"  "italy"

Это также может быть

str_extract(text, "(?<=@)[^, ]+")
#[1] "pisa"  "italy"

Или в base R, используя sub, захватить слово после @ и в замене указать обратную ссылку (\\1) захваченной группы

sub("^@(\\w+).*", "\\1", text)
#[1] "pisa"  "italy"

Также другой вариант - regmatches/regexpr

regmatches(text, regexpr('(?<=@)\\w+', text, perl = TRUE))
#[1] "pisa"  "italy"

Или с trimws

trimws(text, whitespace = '@|,? .*')
#[1] "pisa"  "italy"

data

text <- c("@pisa, what's up?", "@italy @spain we're praying for you.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...