Skip to content

gsub + backslashes

5 messages · Torsten Hothorn, Simon Urbanek, Gabor Grothendieck +2 more

#
Dear developeRs,

I thought that backslashes can be escaped in the usual way (and I think I 
did this before) but I can't see why

R> gsub("\\", "x", "\alpha")
Error in gsub(pattern, replacement, x, ignore.case, extended, fixed, 
useBytes) :
         invalid regular expression '\'

gives an error. Or am I just blind?

Best,

Torsten

R> version
                _
platform       i686-pc-linux-gnu
arch           i686
os             linux-gnu
system         i686, linux-gnu
status         Under development (unstable)
major          2
minor          4.0
year           2006
month          04
day            18
svn rev        37840
language       R
version.string R version 2.4.0 Under development (unstable) (2006-04-18 
r37840)
#
On Apr 24, 2006, at 10:23 AM, Torsten Hothorn wrote:

            
In REs you need to escape backslashes, so you need double-escaping:  
one for the R string representation and one for the RE:

 > gsub("\\\\", "x", "\\alpha")
[1] "xalpha"

For illustration purposes:

 > cat("\\\\")
\\
 > cat("\alpha")
lpha
 > cat("\\alpha")
\alpha

Cheers,
Simon
#
\ is a special character in regular expressions so you need to
escape it as \\ but putting \\ between quotes give you only \
so you need \\\\ to get \\.  Any of these would work:

gsub("\\\\", "x", "\\alpha")
gsub("[\\]", "x", "\\alpha")
sub(".", "x", "\\alpha") # assumes \ is first character
gsub("\\", "x", "\\alpha", fixed = TRUE)
chartr("\\", "x", "\\alpha")
On 4/24/06, Torsten Hothorn <Torsten.Hothorn at rzmail.uni-erlangen.de> wrote:
#
On Mon, 24 Apr 2006, Torsten Hothorn wrote:

            
Escape for R and escape for regexp:
[1] "xalpha"
#
On Mon, 24 Apr 2006, Prof Brian Ripley wrote:

            
Also, unless fixed==TRUE, you need to double the backslash
in the replacement string (because \\<digit|U|L> has a special
meaning when fixed!=TRUE):

   > cat(gsub("/", "\\\\", "C:/Program Files/R"),"\n")
   C:\Program Files\R
   > cat(gsub("/", "\\", "C:/Program Files/R", fixed=T), "\n")
   C:\Program Files\R

----------------------------------------------------------------------------
Bill Dunlap
Insightful Corporation
bill at insightful dot com
360-428-8146

 "All statements in this message represent the opinions of the author and do
 not necessarily reflect Insightful Corporation policy or position."