On 31 Jan 2005, [EMAIL PROTECTED] wrote:

>
> Slight correction which I realized after sending, see below for 
> version/release seperation, which I should have seen but blame lack of 
> sleep ;-)

> corrected versions:
>       4.3.0
>       3.2.3d
>       3
>       5.42a
>       1.10
>
> (new) releases:
>       78.EL
>       12
>       4
>       0
>       16.9.EL
>
>
>> arches:
>>     i386,
>>     i386,
>>     noarch,
>>     noarch,
>>     i386

The regexp for the above could be:

reg = sre.compile(
    r'''
    (?P<name>
    ^[-\w]+      # name is the match in our string which can consist of
                 # nearly everything
     (\.\D[-\w]+?)?) # if it contains a point it is followed by a non-digit char
                     # we search till we find
    -            # a hyphen
    (?P<version>
    \d+(\.\w+)*) # a version consists of digits and points
                 # we search till we find
    -            # a hyphen
    (?P<release>
    [\d.]+(EL)?) # release consists of digits seperated by a point and ends
                 # optionally with EL
    \.(\w*\.)?   # no comes a point and optionally a string
    (?P<arch>
    \w+?)        # arch is the shortest everything between .rpm and the point
    \.rpm$'''
    , sre.X)

,----
| >>> for name in names:
|         m = reg.search(name)
|         print m.groupdict()
| ... ... ... 
| {'release': '78.EL', 'version': '4.3.0', 'arch': 'i386', 'name': 
'XFree86-ISO8859-15-75dpi-fonts'}
| {'release': '12', 'version': '3.2.3d', 'arch': 'i386', 'name': 'xfig'}
| {'release': '4', 'version': '3', 'arch': 'noarch', 'name': 
'rhel-ig-ppc-multi-zh_tw'}
| {'release': '0', 'version': '5.42a', 'arch': 'noarch', 'name': 
'perl-DateManip'}
| {'release': '16.9.EL', 'version': '1.1.0', 'arch': 'i386', 'name': 
'openoffice.org-style-gnome'}
| >>> 
`----


   Karl
-- 
Please do *not* send copies of replies to me.
I read the list
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to