2013-10-24 8 views
9

文字列「Hello」があるとします。私は、この文字列にピリオドが含まれているかどうかを確認したい:Rの期間はGreplですか?

text <- "Hello." 
results <- grepl(".",text) 

は、これはTRUEとして結果を返しますが、テキストが「こんにちは」であれば、それはそれとしても返すでしょう。私は非常に混乱しています、私はドキュメントでこれについて何も見つけることができません、そして、それは期間のためだけこれを行います。

アイデア?

ありがとうございます!

+6

は '' *任意の*文字です。 ***何でも***。あなたは '' \\。 ''を意味しました。 –

+5

Au contraire!ドキュメントは、 'grepl'が正規表現をどのように使用するかを記述するために膨大な時間を費やしています。' .'は特殊文字です。ドキュメントには、正規表現のセクションへのリンクと、正規表現を使用するのではなく、 'fixed = TRUE'をどのように正確にマッチングさせるかについての議論があります。 – joran

+0

Spot on。パターンマッチンと置換テキストには表示されないので、私はそれを確認する必要があります。 – marc

答えて

15

SimonO101で指摘したように.が何を意味しますが、明示的な.を探したい場合は

> grepl("\\.", "Hello.") 
[1] TRUE 
> grepl("\\.", "Hello") 
[1] FALSE 

これらの例との違いは、その後、あなたが探して意味\\.を使用して、それをスキップする必要が参照してください。 .

Rのドキュメントは、正規表現では広範囲です。ドットの使用方法については、this linkを参照してください。

私は通常Jilberのアプローチを使用しますが、ここで他の二つの方法があり
9

: ""

> grepl("[.]", "Hello.") 
[1] TRUE 
> grepl("[.]", "Hello") 
[1] FALSE 

> grepl(".", "Hello.", fixed = TRUE) 
[1] TRUE 
> grepl(".", "Hello", fixed = TRUE) 
[1] FALSE 
関連する問題