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

このテキスト ファイルから、以下を使用して「Exploratory Objective(s)」を 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 に答える