Extracting patterns after matching a regex
metolone+gmane at gmail.com
Tue Sep 8 15:21:53 CEST 2009
"Martin" <mdekauwe at gmail.com> wrote in message
news:5941d8f1-27c0-47d9-8221-d21f07200008 at j39g2000yqh.googlegroups.com...
> I need to extract a string after a matching a regular expression. For
> example I have the string...
> s = "FTPHOST: e4ftl01u.ecs.nasa.gov"
> and once I match "FTPHOST" I would like to extract
> "e4ftl01u.ecs.nasa.gov". I am not sure as to the best approach to the
> problem, I had been trying to match the string using something like
> m = re.findall(r"FTPHOST", s)
> But I couldn't then work out how to return the "e4ftl01u.ecs.nasa.gov"
> part. Perhaps I need to find the string and then split it? I had some
> help with a similar problem, but now I don't seem to be able to
> transfer that to this problem!
In regular expressions, you match the entire string you are interested in,
and parenthesize the parts that you want to parse out of that string. The
group() method is used to get the whole string with group(0), and each of
the parenthesized parts with group(n). An example:
>>> s = "FTPHOST: e4ftl01u.ecs.nasa.gov"
>>> import re
>>> re.search(r'FTPHOST: (.*)',s).group(0)
>>> re.search(r'FTPHOST: (.*)',s).group(1)
More information about the Python-list