2013-10-24 53 views
9

可以說我有一個字符串「你好」。我想看看這個字符串包含一個週期:Grepl在R?期間?

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

這將返回結果爲真實的,但它會返回,以及如果文字是「你好」。我非常困惑,在文檔中我找不到任何有關此內容的內容,並且僅在此期間執行此操作。

任何想法?

謝謝!

+6

''是* *任意字符 「」。 *** ***任何東西。你的意思是「\\。」。 –

+5

Au contraire!文檔花費了大量的時間來描述'grepl'如何使用正則表達式,其中'.'是一個特殊字符。文檔中甚至還有關於正則表達式的部分的鏈接,以及關於如何設置'fixed = TRUE'將執行精確匹配而不使用正則表達式的大量討論。 – joran

+0

現貨。 @joran,我需要梳理它,因爲我沒有在模式匹配和替換文本中看到它。 – marc

回答

15

見這些示例的不同

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

.意味着任何事,因爲SimonO101指出的那樣,如果你想尋找一個明確的.,那麼你必須使用\\.跳過它,這意味着尋找一個.

R文檔在正則表達式上很廣泛,您也可以看看this link以瞭解點的用法。

9

我用Jilber的做法通常是,但這裏有另外兩種方式:

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

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