0

我在一个名为 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

从这个文本文件中,我正在尝试使用下面的 grep 搜索“探索性目标”。我期望的输出行号是 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)
4

1 回答 1

1

您必须转义括号:

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

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

key_str <- gsub("([\\(\\)])", "\\\\\\1", string)
于 2013-09-16T22:35:45.127 回答