classification
Title: have a way to search backwards for re
Type: feature request Stage:
Components: None Versions:
process
Status: closed Resolution: duplicate
Dependencies: Superseder: Major reworking of Python 2.5.2 re module
View: 3825
Assigned To: niemeyer Nosy List: amaury.forgeotdarc, loewis, mrabarnett, niemeyer, phr, timehorse (6)
Priority: normal Keywords

Created on 2002-02-13 03:22 by phr, last changed 2008-09-22 01:00 by benjamin.peterson.

Messages (6)
msg53476 - (view) Author: paul rubin (phr) Date: 2002-02-13 03:22
There doesn't seem to be any reasonable way to search
a string backwards for a regular expression, starting
from a given character position.  I notice that the
underlying C regular expression implemention supports
a direction flag.

I propose adding a direction flag to the search function
on match objects:

r = re.compile(...)
m = re.search(str, startpos=5000, endpos=-1, dir=-1)

would search in str for r, starting at
location 5000 and searching backwards through
location 0 (the beginning of the string).

This is useful in (for example) text editors where
you want to be able to search forwards or backwards,
or if you're parsing an html file and see a </table>
and want to find the matching <table>, etc.

phr
msg53477 - (view) Author: Martin v. Löwis (loewis) Date: 2002-03-27 20:32
Logged In: YES 
user_id=21627

Moved to feature requests tracker.
msg53478 - (view) Author: paul rubin (phr) Date: 2003-09-29 19:53
Logged In: YES 
user_id=72053

Another way to do this would be add a direction flag to the 
regexp itself, like re.R (for reverse) if R isn't already in use:

   group  = re.search(pat, str, start, end, re.R)

or something like that.

I continue to want this feature.  It's very handy for writing 
web scrapers, which I do fairly frequently.
msg72784 - (view) Author: Matthew Barnett (mrabarnett) Date: 2008-09-08 17:26
Does this request still stand? I'm working on the re module at the moment.
msg72832 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) Date: 2008-09-09 09:05
Why not? I needed such a feature some time ago.
But if possible, it should be a keyword argument:
re.search(..., backwards=True)
similar to list.sort(reverse=True)
msg73549 - (view) Author: Matthew Barnett (mrabarnett) Date: 2008-09-22 00:51
Implemented as part of #3825.
History
Date User Action Args
2008-09-22 01:00:03benjamin.petersonsetstatus: open -> closed
resolution: duplicate
superseder: Major reworking of Python 2.5.2 re module
2008-09-22 00:51:46mrabarnettsetmessages: + msg73549
2008-09-21 12:00:33timehorsesetnosy: + timehorse
2008-09-09 09:05:26amaury.forgeotdarcsetnosy: + amaury.forgeotdarc
messages: + msg72832
2008-09-08 17:26:22mrabarnettsetnosy: + mrabarnett
messages: + msg72784
2002-02-13 03:22:55phrcreate