R stringr: str_match игнорирование текста между выражениями - PullRequest
1 голос
/ 09 июля 2020

У меня есть строка, содержащая такой текст:

Base_Text <- "John will sell Apple stock"

Если я хочу извлечь название компании, я могу использовать что-то вроде:

str_match(Base_Text, "will sell [:upper:][a-z]+ stock")

Но я у меня возникают проблемы, когда текст становится более сложным, например:

New_Text <- "John will sell, given the current situation of the market, all of his Apple stock"

Я ищу регулярное выражение, которое игнорирует все, что находится между «продавать» и заглавным словом, которое, как я полагаю, является именем компания:

str_match(New_Text, "will sell [ignore everything in between] [:upper:][a-z]+ stock")

Есть ли способ добиться этого?

1 Ответ

1 голос
/ 09 июля 2020

Я предлагаю это решение грубой силы, которое можно явно улучшить, я уверен:

library(stringr)
New_str <- "John will sell, given the current situation of the market, all of his Apple stock"
start <- str_locate(New_str, pattern = "sell")[2]
end <- str_locate_all(New_str,
           pattern = "[:upper:][a-z]+")[[1]][2, 1]
paste(substr(New_str, 1, start + 1), substr(New_str, end - 1, str_count(New_str)), sep = "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...