[Tutor] uncomprehension on RE

cedric briner work at infomaniak.ch
Fri Sep 21 08:54:33 CEST 2007


Kent Johnson wrote:
> 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
I had done that before writing my first email. I knew how to do this in 
few python steps. But some how I was expecting RE beeing able to do this 
in an one shoot.

Thanks for your precious help.

Ced.
> 
> Kent
> 


-- 

Cedric BRINER
Geneva - Switzerland


More information about the Tutor mailing list