bruce wrote:
> Trying to quickly get the re.match(....) to extract the groups from the
> string.
>
> x="MATH 59900/40 [47490] - THE "
>
> The regex has to return MATH, 59900, 40,, and 47490
>
> d=re.match(r'(\D+)...) gets the MATH...
>
> But I can't see (yet) how to get the rest of what I need...
>
> Pointers would be useful.
Bruce, you have to make an attempt to explain exactly what you want in plain
English. At the very least there have to be a few more examples, both
matching and not matching.
The number of regular expressions that can be reverse-engineered from a
single example is infinite, ranging from
>>> re.compile("(MATH) (59900)/(40) \[(47490)\]").search(x).groups()
('MATH', '59900', '40', '47490')
-- which is most certainly too tight -- over
>>> re.compile(r"([A-Z]+)\s+(\d+)/(\d+)\s+\[(\d+)\]").search(x).groups()
('MATH', '59900', '40', '47490')
-- which may be just right -- to
>>> re.compile(r"([^ /[\]]+).*?([^ /[\]]+).*?([^ /[\]]+).*?([^
/[\]]+)").search(x).groups()
('MATH', '59900', '40', '47490')
-- which is probably too permissive.
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor