2016-10-05 6 views
1

のスペースとpuctuationで特定の単語を抽出することができ、私はこの文書を持っている、と私はRはどのように私はR

a = "people/NN + is/VB 
no/AJ + one/NC + can/VA 
certain/AJ + man/NN + is/VB 

(各文字列セットは入力してエスケープされます)

Iを使用して特定の単語を抽出したいです私はこのコードを試みたが、

を動作しませんでした

"people" "man" 

これらの言葉(VERDと併置の言葉「である」)を抽出したいです3210

b = "([A-Za-z]+)/[N]\\s+\\sis/VB" 
str_match_all(a, b) 

正規表現を教えてください

答えて

0

これを試してみてください:

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" 
+0

ありがとうしかし、変数 "" "C(" A " "B"、 "C")" のようにvertorizedされていません。 – Rcoding

0

私は下の正規表現があなたのためのトリックを行うと思います。

r <- "[a-zA-Z]+(?=\\/NN\\s\\+\\s(is))" 

私は基本パッケージのパターンマッチングとのマッチングを行っており、上記の例のために働いています。それをさらにテストしてください。

m <- gregexpr(r,a,perl = TRUE) 
regmatches(a,m)[[1]]