3

キーワードの前にある用語を抽出しようとしている文字列があります。

str = "This is a <Keyword>(-)Controlled design"

キーワードと制御対象または「-」の間にスペースを入れることができます。「Controlled」の前を抽出する必要があります。Perl では、以下の正規表現を使用しています。

/(\w+)[- ]controlled/i) 

バックスラッシュと設定を処理した後、Rで同じことを試みていますperl=TRUE。しかし、うまくいきません。この式を使用してRでを抽出するにはどうすればよいですか? 使用できる代替式/ライブラリはありますか?

前もって感謝します、シマク

4

2 に答える 2

5

このようなものは、を使用して十分gsubでしょうか?

str <- "This is a keyword-Controlled design"

gsub("(.+\\s)?(\\w+)(\\s|-)(Controlled).+","\\2",str)
#[1] "keyword"

gsub("(.+\\s)?(\\w+)(\\s|-)(Controlled).+","\\2",str)
#[1] "keyword"

また、正規表現は be all と end all ではないため:

spl <- unlist(strsplit(str,"[-| ]"))
spl[which(spl=="Controlled")-1]
#[1] "keyword"
于 2013-07-15T05:39:19.980 に答える
4

str_matchまたは、 from stringr packageを使用できます。

> library(stringr)
> str <- "This is a keyword-Controlled design"
> str_match(str, "(?i)(\\w+)[- ]controlled")[2]
[1] "keyword"
于 2013-07-15T06:30:22.240 に答える