This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: have a way to search backwards for re
Type: enhancement 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: Drekin, amaury.forgeotdarc, loewis, mrabarnett, niemeyer, phr, timehorse
Priority: normal Keywords:

Created on 2002-02-13 03:22 by phr, last changed 2022-04-10 16:04 by admin. This issue is now closed.

Messages (7)
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) * (Python committer) 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) * (Python triager) 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) * (Python committer) 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) * (Python triager) Date: 2008-09-22 00:51
Implemented as part of #3825.
msg225871 - (view) Author: Adam Bartoš (Drekin) * Date: 2014-08-25 10:38
Hello, I wanted to use this feature and found this issue. It is marked as closed, being a duplicate of another closed issue. However the feature is actually not present. In 2008 it was planned to be added by Matthew Barnett in #3825, but the work of improving re module moved to bigger project under #2636 which resulted in regex package to be evenually included in stdlib. So unless regex is included in stdlib, one should try regex package (e.g. pip install regex).

I've put here this summary just in case there is someone like me who looked for the feature and found this issue.
History
Date User Action Args
2022-04-10 16:04:59adminsetgithub: 36095
2014-08-25 10:38:33Drekinsetnosy: + Drekin
messages: + msg225871
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