Regular exp matching delimited string excepting trailing delimiters?
Eddie Corns
eddie at holyrood.ed.ac.uk
Thu Oct 31 15:06:59 EST 2002
Alex Martelli <aleax at aleax.it> writes:
>Jeff Kowalczyk wrote:
>> Can anyone suggest a reg exp (using re) that will match the entirety of a
>> delimited string of values, omitting zero or more delimiters at the end of
>> the string? For example:
>>
>> from 'A,B,C,123,D,E,,,,,,' with delimiter ',' match 'A,B,C,123,D,E'
>>
>> I have (,*\Z) to match the trailing delimiters for removal with string
>> slicing, but I'd prefer to directly match the text to keep, or match both
>> keep and discard as groups. What would be the syntax for an omission like
>> that? Thanks.
>Perhaps:
> ([^,]+,?)*
>but that won't work if you can have e.g. A,B,,,,D,E,Z,,, ("empty fields").
(.*[^,]),*$
ie everything up to a non ',' followed by as many commas as possible until the
end.
>>> x='A,B,,,,D,E,Z,,,'
>>> m=re.search(r'(.*[^,]),*$',x)
>>> m.groups()
('A,B,,,,D,E,Z',)
Doesn't work with empty strings tho or just ,,,
Eddie
More information about the Python-list
mailing list