Skip to content

have a way to search backwards for re #36095

Closed

Description

@phr
mannequin
BPO 516762
Nosy @loewis, @amauryfa
Superseder
  • bpo-3825: Major reworking of Python 2.5.2 re module
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = <Date 2008-09-22.01:00:03.338>
    created_at = <Date 2002-02-13.03:22:55.000>
    labels = ['type-feature']
    title = 'have a way to search backwards for re'
    updated_at = <Date 2014-08-25.10:38:33.476>
    user = 'https://bugs.python.org/phr'

    bugs.python.org fields:

    activity = <Date 2014-08-25.10:38:33.476>
    actor = 'Drekin'
    assignee = 'niemeyer'
    closed = True
    closed_date = <Date 2008-09-22.01:00:03.338>
    closer = 'benjamin.peterson'
    components = ['None']
    creation = <Date 2002-02-13.03:22:55.000>
    creator = 'phr'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 516762
    keywords = []
    message_count = 7.0
    messages = ['53476', '53477', '53478', '72784', '72832', '73549', '225871']
    nosy_count = 7.0
    nosy_names = ['loewis', 'niemeyer', 'phr', 'amaury.forgeotdarc', 'timehorse', 'mrabarnett', 'Drekin']
    pr_nums = []
    priority = 'normal'
    resolution = 'duplicate'
    stage = None
    status = 'closed'
    superseder = '3825'
    type = 'enhancement'
    url = 'https://bugs.python.org/issue516762'
    versions = []

    Activity

    1. phr commented on Feb 13, 2002

      phrmannequin
      MannequinAuthor

      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

    2. loewis commented on Mar 27, 2002

      loewismannequin
      Mannequin

      Logged In: YES
      user_id=21627

      Moved to feature requests tracker.

    3. phr commented on Sep 29, 2003

      phrmannequin
      MannequinAuthor

      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.

    4. mrabarnett commented on Sep 8, 2008

      mrabarnettmannequin
      Mannequin

      Does this request still stand? I'm working on the re module at the moment.

    5. amauryfa commented on Sep 9, 2008

      @amauryfa
      Contributor

      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)

    6. mrabarnett commented on Sep 22, 2008

      mrabarnettmannequin
      Mannequin

      Implemented as part of bpo-3825.

    7. Drekin commented on Aug 25, 2014

      Drekinmannequin
      Mannequin

      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 bpo-3825, but the work of improving re module moved to bigger project under bpo-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.

    8. transferred this issue fromon Apr 9, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions