[R] regular expression question

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Sun Jun 11 23:35:53 CEST 2006


Dirk Eddelbuettel wrote:
> On 11 June 2006 at 14:25, markleeds at verizon.net wrote:
> | i have variables that are of type character but
> | they have number characters at the end. for example :
> | 
> | "AAL123"
> | "XELB245"
> | "A247"
> | 
> | I want a command that gives me just gives me the letter characters
> | for each one. 
> | the letter characters always start first and then the number characters come second and it never flips back to letter characters
> | once the number characters start. i am using R-2.20 on
> | windows Xp. Thanks. substring doesn't work because the
> | length of the letter characters can vary.
> 
> 
> 
>>gsub("(\\d*)$","",c("AAL123", "XELB245", "A247", "FOO123BAR"), perl=TRUE)
> 
> [1] "AAL"       "XELB"      "A"         "FOO123BAR"
> 
> 
> gsub finds what is described by the first regexp [ here (\\d\*)$ --- any
> sequence of digits before the end-of-line ] and applies the second regexp 
> [ here an empty string as we simply delete ] to the third argument.
> 
> Note 
>  - how the $ symbol $ \b prevents it from eating the non-final digits
>    in the counter example FOO123BAR
>  - how the \d for digits needs escaped backslashes \\d
>  - how the * char denotes '1 or more of the preceding thingie'

* normally means "zero or more of the preceding thingie"
+ is the "1 or more or the preceding thingie"

The difference would be apparent if the string being inserted was not
empty.

 > gsub("(\\d*)$","new",c("AAL123", "XELB245", "A247", "FOO123BAR"), perl=TRUE)
[1] "AALnew"       "XELBnew"      "Anew"         "FOO123BARnew"

 > gsub("(\\d+)$","new",c("AAL123", "XELB245", "A247", "FOO123BAR"), perl=TRUE)
[1] "AALnew"    "XELBnew"   "Anew"      "FOO123BAR"


> Hth, Dirk
> 


-- 
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k



More information about the R-help mailing list