You can use parentheses to factor out the common string in David's pattern, as in grep(value=TRUE, "(^|//|[[:space:]]+)AARSD1($|//|[[:space:]]+)", test)
(By 'whitespace' I could not tell if you meant any amount of whitespace or a single whitespace character. I use '+' to match one or more whitespace characters.) Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Jun 26, 2014 at 10:12 PM, David Winsemius <dwinsem...@comcast.net> wrote: > > On Jun 26, 2014, at 6:11 PM, C Lin wrote: > >> Hi Duncan, >> >> Thanks for trying to help. Sorry for not being clear. >> The string I'd like to get is 'AARSD1' >> It can be followed or preceded by white space or // or nothing >> >> so, from test <- c('AARSD11','AARSD1-','AARSD1//','AARSD1 >> //','//AARSD1','AARSD1'); >> >> I want to match only 'AARSD1//','AARSD1 //','//AARSD1','AARSD1' > > Perhaps you want jsut > > grepl('^AARSD1//$|^AARSD1 //$|^//AARSD1$|^AARSD1', test) > >> grepl('^AARSD1//$|^AARSD1 //$|^//AARSD1$|^AARSD1$', test) > [1] FALSE FALSE TRUE TRUE TRUE TRUE > > -- > David. > >> > >> Thanks, >> Lin >> >> ---------------------------------------- >>> From: dulca...@bigpond.com >>> To: bac...@hotmail.com; r-help@r-project.org >>> Subject: RE: [R] regular expression help >>> Date: Fri, 27 Jun 2014 10:59:29 +1000 >>> >>> Hi >>> >>> You only have a vector of length 5 and I am not quite sure of the string you >>> are testing >>> so try this >>> >>> grep('[/]*\\<AARSD1\\>[/]*',test) >>> >>> Duncan >>> >>> Duncan Mackay >>> Department of Agronomy and Soil Science >>> University of New England >>> Armidale NSW 2351 >>> Email: home: mac...@northnet.com.au >>> >>> -----Original Message----- >>> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On >>> Behalf Of C Lin >>> Sent: Friday, 27 June 2014 10:05 >>> To: r-help@r-project.org >>> Subject: [R] regular expression help >>> >>> Dear R users, >>> >>> I need to match a string. It can be followed or preceded by whitespace or // >>> or nothing. >>> How do I code it in R? >>> >>> For example: >>> test <- c('AARSD11','AARSD1-','AARSD1//','AARSD1 //','//AARSD1'); >>> grep('AARSD1(\\s*//*)',test); >>> >>> should return 3,4,5 and 6. >>> >> > > > David Winsemius > Alameda, CA, USA > > ______________________________________________ > 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. ______________________________________________ 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.