I am reading a phrase into an R script as an argument. If the phrase contains an asterisk (*
), I do not want the script to run.
However, I am having issues recognising the asterisk when using grepl. For example:
> asterisk="*"
> phrase1="hello"
> phrase2="h*llo"
> grepl(asterisk,phrase1)
[1] TRUE
> grepl(asterisk,phrase2)
[1] TRUE
The outcome for grepl(asterisk,phrase1)
should be FALSE
. Does anyone know how I can get grepl
to recognise if there is or isn't an asterisk in the phrase?
Try this:
p <- c("Hello", "H*llo")
grepl("\\*", p)
[1] FALSE TRUE
This works because the *
asterisk has special meaning in a regular expresssion. Specifically, *
means find zero or more of the previous element.
Thus you have to escape the asterisk using \\*
. The double escape is necessary because the \
already has the meaning of escape in R.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With