On 23-Nov-08 08:41:02, Robin Clark wrote: > Hello, > I'm trying to determine if a string contains asterisks using the grep > function. I know that this is slightly difficult because * is a special > character in regular expressions and needs to be escaped. However, > escaping the * using \ doesn't work either:
In a regular expression, a term like [*] will match "*" literally, even though "*" is normally a special ("meta") character. Thus: test<-c("1*1","222","*33","44*","555") test # [1] "1*1" "222" "*33" "44*" "555" ?grep grep("[*]",test) # [1] 1 3 4 test[grep("[*]",test)] # [1] "1*1" "*33" "44*" This also works for other metacharacters, even (surprise!) "]": test2<-c("1[1","222","[33","44]","55]") grep("[]]",test2) # [1] 4 5 grep("[[]",test2) # [1] 1 3 However, your error was to use "\*" with only one "\". You should have used "\\*": grep("\\*",test) # [1] 1 3 4 and the "\\" also works for other special characters, though "\" itself can be tricky since to enter a "\" into a string you have to type it as "\\", and R will print it back as "\\" as well: test3<-c("1\\1","222","\\33","44\\","55\\") test3 # [1] "1\\1" "222" "\\33" "44\\" "55\\" nchar(test3) # [1] 3 3 3 3 3 so there really are only 3 characters in each element of test3. But to grep for "\" you have to enter "\\" twice over: grep("\\",test3) # Error in grep(pattern, x, ignore.case, extended, value, fixed) : # invalid regular expression grep("\\\",test3) # Error: syntax error grep("\\\\",test3) # [1] 1 3 4 5 And, just as [*] catches "*", so "[\\]" is needed to catch "\"; grep("[\\]",test3) # [1] 1 3 4 5 Hoping this helps! Ted. > if(grep("\*", model)>0) #does the model have an interaction > { > do something... > } > > produces the following error message: > > Error in grep("*", model) : invalid regular expression '*' > In addition: Warning messages: > 1: '\*' is an unrecognized escape in a character string > 2: unrecognized escape removed from "\*" > 3: In grep("*", model) : > regcomp error: 'Invalid preceding regular expression' > Execution halted > > Any ideas anyone? > Robin > -- > View this message in context: > http://www.nabble.com/grep-for-asterisks-%22*%22%27s-tp20644195p20644195 > .html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@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. -------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 094 0861 Date: 23-Nov-08 Time: 09:29:03 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@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.