[R] how to get to interesting part of pattern match
Gabor Grothendieck
ggrothendieck at myway.com
Fri Nov 19 04:17:02 CET 2004
Vadim Ogranovich <vograno <at> evafunds.com> writes:
: I am looking for a way to extract an "interesting" part of the match to
: a regular expression. For example the pattern "[./](*.)" matches a
: substring that begins with either "." or "/" followed by anything. I am
: interested in this "anything" w/o the "." or "/" prefix. If say I match
: the pattern against "abc/foo" I want to get "foo", not "/foo". In Perl
: one can simply wrap the "interesting" part in () and get it out of the
: match. Is it possible to do a similar thing in R?
:
: There seems to be a way to refer to the match, see below, but I couldn't
: figure out how to make gsub return it.
: > gsub("[./](*.)", "\\1", "abc/foo")
: [1] "abcfoo"
Assuming what was meant is the following (dot and star are
transposed and gsub is sub):
sub("[./](.*)", "\\1", "abc/foo")
then the regular expression matches /foo and the backreference
contains foo so it replaces /foo with foo which is why it returns
abcfoo .
To get just foo ensure that your regular expression matches
the entire string so that the entire string is replaced with
the backreference:
sub("[^./]*[./](.*)", "\\1", "abc/foo")
More information about the R-help
mailing list