R - 精确字符串匹配 - 重访

时间:2013-09-16 22:15:53

标签: regex r grep

我在名为Input

的文件中有以下测试输入
Exploratory objectives :    

This is Exp objective 1

This is Exp objective 2

3.3 Exploratory objective(s) 

This is Exp objective 1   

This is Exp objective 2

从这个文本文件中,我正在尝试使用下面的“探索性目标”。我期待的输出行号为7。

但是,当我运行以下命令时:我得到的行号是1.有人可以指出我的grep在这里出了什么问题以及它为什么不返回7?我也是如何解决这个问题的?

 key_str <-"Exploratory objective(s)"  
 key_str 
 key_pat <- paste0("(", key_str, ")", "(?![[:alpha:]])")
 line_number<-grep(key_pat,Input,perl=TRUE)
 line_number

 Expected line_number: 7

 Output line_number using above: 1 (Incorrect)

1 个答案:

答案 0 :(得分:1)

你必须转义括号:

key_str <- "Exploratory objective\\(s\\)"

如果字符串是动态生成或从文件中读取的,请使用:

key_str <- gsub("([\\(\\)])", "\\\\\\1", string)