Hi, I am struggling to extract a part of string using regular expression in R. Let say, the string to be extracted is 'ron' from the expression 'my name is ron'. So I tried following:> gsub("[^(ron)]", "", 'my name is ron')[1] "nron" I was expecting to get 'ron', which is not the case. Could someone please guide me what will be the right way for that? Thanks for your help.
Hi, You could try: sub(".*(ron)", "\\1", 'my name is ron') #[1] "ron" #or ?sub('^.* ([[:alnum:]]+)$', '\\1','my name is ron') #[1] "ron" A.K. On Sunday, January 5, 2014 11:52 AM, Ron Michael <ron_michael70 at yahoo.com> wrote: Hi, I am struggling to extract a part of string using regular expression in R. Let say, the string to be extracted is 'ron' from the expression 'my name is ron'. So I tried following:> gsub("[^(ron)]", "", 'my name is ron')[1] "nron" I was expecting to get 'ron', which is not the case. Could someone please guide me what will be the right way for that? Thanks for your help. ______________________________________________ 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.
On Jan 5, 2014, at 12:45 AM, Ron Michael wrote:> Hi, > > I am struggling to extract a part of string using regular expression in R. > > Let say, the string to be extracted is 'ron' from the expression 'my name is ron'. So I tried following: > >> gsub("[^(ron)]", "", 'my name is ron') > [1] "nron" > > > I was expecting to get 'ron', which is not the case.The "[" operator in regex does not take into account the sequence of the target letters so you get all "r", all"o", and all "n" in the order in which they occur. "[onr]" will have the same meaning as "[ron]". Try:> gsub("^.*(ron).*$", "\\1", 'my name is ron')[1] "ron" -- David Winsemius Alameda, CA, USA