例えば、以下の文字列strから、(12)の場所を探すことを考える。
str <- c("(12)", "(123)", "(132)")
grepやstr_matchで"(12)"を検索にかけると、"(123)"まで選ばれてしまう。
grep("(12)", str)
これは、rの正規表現(Regular expression)に則ると括弧が認識されないので、実質的に"12"で検索している状態となっていることが原因である。
ここで(12)だけを抽出するためには、
1. 括弧を"\\("または"\\)"で表現する または、
2. "\\b"で境界を作る と良い。
grep("\\(12\\)", str)
grep("\\b(12)\\b", str)
(追記)
fixed = TRUE を挿入すると、正規表現ではない文字として扱ってもらえる。
grep("(12)", str, fixed = TRUE)
No comments:
Post a Comment