non-terminating regex match

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Maurizio Vitale

    non-terminating regex match


    Has to be something really stupid, but the following never finish
    (running Python 2.5.1 (r251:54863, Jan 10 2008, 18:00:49)
    [GCC 4.2.1 (SUSE Linux)] on linux2).

    The intention is to match C++ identifiers, with or without namespace
    qualification, with or without arguments (e.g. variables, functions and
    macros).
    The following should be accepted:
    main
    main(int,char** )
    ::main
    std::cout
    ::std::cout
    NDEBUG

    Thanks for any help.
    And yes, I'm a total beginner when it comes to Python, but it seems
    very strange to me that a regex match on a finite length string
    doesn't terminate
    Regards,

    Maurizio

    #!/usr/bin/env python
    # -*- Python -*-

    import re

    if __name__ == '__main__':
    r = re.compile (
    r'(?:(?P<scope> (?:(?:::)?\w+)* )::)?'
    r'(?P<name>\w+) '
    r'(?:\((?P<argu ments>[^\)]*)\))?'
    )
    match = r.search ('WITH_ALOHA_EX CEPTION_HANDLER S')


  • Marc 'BlackJack' Rintsch

    #2
    Re: non-terminating regex match

    On Wed, 02 Apr 2008 16:01:59 +0000, Maurizio Vitale wrote:
    And yes, I'm a total beginner when it comes to Python, but it seems
    very strange to me that a regex match on a finite length string
    doesn't terminate
    It does terminate, you just don't wait long enough. Try it with fewer
    characters and then increase the identifier character by character and
    watch the time of the runs grow exponentially.

    Ciao,
    Marc 'BlackJack' Rintsch

    Comment

    Working...