18

Lets say I have a string "Hello." I want to see if this string contains a period:

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

This returns results as TRUE, but it would return that as well if text is "Hello" without the period.

I'm confused, I can't find anything about this in the documentation and it only does this for the period.

Any ideas?

4

2 回答 2

28

See the differences with these examples

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

the . means anything as pointed out by SimonO101, if you want to look for an explicit . then you have to skip it by using \\. which means look for a .

R documentation is extensive on regular expressions, you can also take a look at this link to understand the use of the dot.

于 2013-10-24T15:47:07.910 回答
16

I use Jilber's approach usually but here are two other ways:

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

> grepl(".", "Hello.", fixed = TRUE)
[1] TRUE
> grepl(".", "Hello", fixed = TRUE)
[1] FALSE
于 2013-10-24T15:49:18.187 回答