#r #regex
#r #регулярное выражение
Вопрос:
У меня есть этот документ, и я хочу извлечь определенные слова с помощью R
a = "people/NN is/VB
no/AJ one/NC can/VA
certain/AJ man/NN is/VB
(каждый набор строк экранируется вводом)
Я хочу извлечь эти слова (слова, сопоставленные с verd «is»)
"people" "man"
итак, я попробовал этот код, но не сработал
b = "([A-Za-z] )/[N]\s \sis/VB"
str_match_all(a, b)
Пожалуйста, дайте мне знать регулярное выражение
Ответ №1:
Попробуйте это:
a = c("people/NN is/VB",
"no/AJ one/NC can/VA",
"certain/AJ man/NN is/VB",
"every/AJ one/NC is/VB")
library(stringr)
word_N <- str_match(a, "([a-zA-Z] )/[N][a-zA-Z]*\s*\ \s*is/VB")[,2]
word_N[!is.na(word_N)]
#[1] "people" "man" "one"
Комментарии:
1. спасибо, но переменная «a» не верторизована как «c («a», «b», «c»)».
Ответ №2:
Я думаю, что приведенное ниже регулярное выражение поможет вам.
r <- "[a-zA-Z] (?=\/NN\s\ \s(is))"
Я выполнил сопоставление с шаблоном базового пакета, и это сработало для приведенного выше примера. Протестируйте его дальше.
m <- gregexpr(r,a,perl = TRUE)
regmatches(a,m)[[1]]