Hi all, Is there a method for escaping strings to be used regular expressions? i.e. if I have a user supplied string that I'd like to use as a fixed component is there a method that will turn (e.g.) ".$^" into "\\.\\$\\^" ? Thanks, Hadley -- http://had.co.nz/
Try the fixed argument: grep(".$^", c("Test.$^", "Test"), fixed = TRUE) On Fri, Nov 13, 2009 at 11:33 AM, Hadley Wickham <hadley at rice.edu> wrote:> Hi all, > > Is there a method for escaping strings to be used regular expressions? > ?i.e. if I have a user supplied string that I'd like to use as a fixed > component is there a method that will turn (e.g.) ".$^" into > "\\.\\$\\^" ? > > Thanks, > > Hadley > > -- > http://had.co.nz/ > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
This is not minimal (it will escape every non-word character) but is short and the needlessly escaped ones should do no harm (though you might want to double check that assumption on a few examples): gsub("(\\W)", "\\\\\\1", x) On Fri, Nov 13, 2009 at 8:33 AM, Hadley Wickham <hadley at rice.edu> wrote:> Hi all, > > Is there a method for escaping strings to be used regular expressions? > ?i.e. if I have a user supplied string that I'd like to use as a fixed > component is there a method that will turn (e.g.) ".$^" into > "\\.\\$\\^" ? > > Thanks, > > Hadley > > -- > http://had.co.nz/ > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
> -----Original Message----- > From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of Hadley Wickham > Sent: Friday, November 13, 2009 5:34 AM > To: r-help > Subject: [R] Escaping regular expressions > > Hi all, > > Is there a method for escaping strings to be used regular expressions? > i.e. if I have a user supplied string that I'd like to use as a fixed > component is there a method that will turn (e.g.) ".$^" into > "\\.\\$\\^" ?I've used the following: asFixedRegex <- function(pattern) { gsub("([][^${}().?*+\\])", "\\\\\\1", pattern) } E.g., > asFixedRegex(".$^") [1] "\\.\\$\\^" or > x <- c("C:\\Program Files\\word", "P[[:alnum:]]{2,3}", "(x+y)[1*3]") > regexpr(paste(collapse="|", asFixedRegex(x)), x) [1] 1 1 1 attr(,"match.length") [1] 21 17 10 > nchar(x) # expect same as match.length [1] 21 17 10 Is there a standard function to do this? If so, I'd like to know its name. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com> > Thanks, > > Hadley > > -- > http://had.co.nz/ > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >