A better RE?

Eddie Corns eddie at holyrood.ed.ac.uk
Fri Mar 10 13:41:56 CET 2006


"Fredrik Lundh" <fredrik at pythonware.com> writes:

>Eddie Corns 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
>>
>> Just a small point - what does "in order" mean here? if it means that eg 1362
>> is not valid then you're stuck because it's context sensitive and hence not
>> regular.
>>
>> I can't see how any of the fancy extensions could help here but maybe I'm
>> just lacking insight.

>import re

>p = re.compile("(?=[1234567])(1?2?3?4?5?6?7?)$")

>def test(s):
>    m = p.match(s)
>    print repr(s), "=>", m and m.groups() or "none"

>test("")
>test("1236")
>test("1362")
>test("12345678")

>prints

>'' => none
>'1236' => ('1236',)
>'1362' => none
>'12345678' => none

></F>

I know I know!  I cancelled the article about a minute after posting it.

Eddie



More information about the Python-list mailing list