Extracting patterns after matching a regex

Mark Tolonen 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...
> Hi,
>
> 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
> this:
>
> 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)
'FTPHOST: e4ftl01u.ecs.nasa.gov'
>>> re.search(r'FTPHOST: (.*)',s).group(1)
'e4ftl01u.ecs.nasa.gov'

-Mark





More information about the Python-list mailing list