我有一个字符串,我试图从中提取关键字之前的术语。
str = "This is a <Keyword>(-)Controlled design"
关键字和受控制之间或“ - ”之间可以有空格。我需要在“受控”前提取。在Perl中,我使用下面的正则表达式:
/(\w+)[- ]controlled/i)
在处理反斜杠并设置perl=TRUE
后,我在R中尝试相同的操作。但它不起作用。如何使用此表达式来提取R?是否有可以使用的替代表达式/库?
提前致谢, 西马克
答案 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"