在R中使用Perl RegEx

时间:2013-07-15 05:15:45

标签: regex r

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

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

关键字和受控制之间或“ - ”之间可以有空格。我需要在“受控”前提取。在Perl中,我使用下面的正则表达式:

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

在处理反斜杠并设置perl=TRUE后,我在R中尝试相同的操作。但它不起作用。如何使用此表达式来提取R?是否有可以使用的替代表达式/库?

提前致谢, 西马克

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:4)

或者,您可以使用stringr package中的str_match

> library(stringr)
> str <- "This is a keyword-Controlled design"
> str_match(str, "(?i)(\\w+)[- ]controlled")[2]
[1] "keyword"