次の例を考えてみましょう。
> testLines <- c("I don't want to match this","This is what I want to match")
> grepl('is',testLines)
> [1] TRUE TRUE
しかし、私が欲しいのは、それが単一の単語として独立している場合にのみ「is」と一致することです。 Perlのドキュメントを少し読んだところ、これを行う方法は\ bを使用することであるように見えました。これは、パターンの前後にあるものを識別するために使用できるアンカーです。つまり、\ bword\bは「Word」と一致しますが「sword」とは一致しません。 '。そこで、「TRUE」に設定されたPerl構文を使用して、次の例を試しました。
> grepl('\bis\b',testLines,Perl=TRUE)
> [1] FALSE FALSE
私が探している出力はFALSE TRUE
。
「\ <」はWordの開始の別のエスケープシーケンスであり、「\>」は終了です。 R文字列では、円記号を2倍にする必要があるため、次のようになります。
> grepl("\\<is\\>", c("this", "who is it?", "is it?", "it is!", "iso"))
[1] FALSE TRUE TRUE TRUE FALSE
これは「is!」と一致することに注意してください。しかし、「iso」ではありません。
エスケープを正規表現に渡すには、ダブルエスケープが必要です。
> grepl("\\bis\\b",testLines)
[1] FALSE TRUE
非常に単純に、先頭のスペースに一致します。
testLines <- c("I don't want to match this","This is what I want to match")
grepl(' is',testLines)
[1] FALSE TRUE
正規表現にはこれ以上のものがありますが、基本的にパターンはより具体的である必要があります。より一般的なケースで必要になるのは、大きなトピックです。正規表現を参照してください
この例で機能するその他の可能性:
grepl(' is ',testLines)
[1] FALSE TRUE
grepl('\\sis',testLines)
[1] FALSE TRUE
grepl('\\sis\\s',testLines)
[1] FALSE TRUE