как я могу извлечь определенные слова с пробелом и объединением в R

#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]]