A better RE?
bruno at modulix
onurb at xiludom.gro
Fri Mar 10 04:12:14 EST 2006
Magnus Lycka wrote:
> I want an re that matches strings like "21MAR06 31APR06 1236",
> where the last part is day numbers (1-7), i.e it can contain
> the numbers 1-7, in order, only one of each, and at least one
> digit. I want it as three groups. I was thinking of
>
> r"(\d\d[A-Z]\d\d) (\d\d[A-Z]\d\d) (1?2?3?4?5?6?7?)"
>
> but that will match even if the third group is empty,
> right? Does anyone have good and not overly complex RE for
> this?
Simplest:
>>> exp = r"(\d{2}[A-Z]{3}\d{2}) (\d{2}[A-Z]{3}\d{2}) (\d+)"
>>> re.match(exp, s).groups()
('21MAR06', '31APR06', '1236')
but this could give you false positive, depending on the real data.
If you want to be as strict as possible, this becomes a little bit hairy.
> P.S. I know the "now you have two problems reply..."
!-)
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"
More information about the Python-list
mailing list