Despite reading the help page of R regex
Finally, to include a literal -, place it first or last (or, for perl = TRUE only, precede it by a backslash).
I can't understand the difference between
grepl(pattern=paste("^thing1\\-",sep=""),x="thing1-thing2")
and
grepl(pattern=paste("^thing1-",sep=""),x="thing1-thing2")
Both return TRUE. Should I escape or not here? What is the best practice?
To see what it means for
-
to have a special meaning inside of a character class (and how putting it last gives it its literal meaning), try the following:They are both matching the exact same text in these instances. I.e.:
Using a
-
is a special character in certain situations though, for specifying ranges of values, such as characters betweena
andz
when specifed inside[]
, e.g.:The hyphen is mostly a normal character in regular expressions.
You do not need to escape the hyphen outside of a character class; it has no special meaning.
Within a character class
[ ]
you can place a hyphen as the first or last character in the range. If you place the hyphen anywhere else you need to escape it in order to add it to your class.Examples:
Note: It is more common to find a hyphen placed first or last within a character class.