3

我有一个字符串,我试图从中提取关键字之前的术语。

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

关键字和受控之间可以有空格或“-”。我需要提取之前的“受控”。在 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"

而且因为正则表达式不是全部和全部:

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

或者,您可以使用str_matchstringr 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 回答