cedric briner wrote:
> To let you know, I'm writing a script to generate bind9 configuration 
> from a nis hosts table. So I was trying in a one re to catch from this:
> 
> <ip> <hostname> [ <cname> ...] [# comment]
> e.g:
> 10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice comment
> 37.64.86.23 hostname2
> 35.25.89.34 hostname3 alias5
> .. ..
> 
> 
> so I was wishing to write an re expresion which will do in a one step 
> all the job ! maybe am'I expecting too much from re :)

You can use an re to get the four primary fields, then use split() to 
break up the aliases. Try this:

import re
data = '''10.12.23.45 hostname1 alias1 alias2 alias3 # there is a nice 
comment
37.64.86.23 hostname2
35.25.89.34 hostname3 alias5
'''.splitlines()

for line in data:
     match = re.search(r'^(\S+)\s+(\S+)([^#]*)(#.*)?$', line)
     if match:
         ip, host, aliases, comment = match.group(1, 2, 3, 4)
         print 'ip:', ip
         print 'host:', host
         if aliases:
             aliases = aliases.strip().split()
             for alias in aliases:
                 print 'alias:', alias
         if comment:
             print comment
         print

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to