non-terminating regex match

Maurizio Vitale mav at cuma.polymath-solutions.lan
Wed Apr 2 12:01:59 EDT 2008


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<arguments>[^\)]*)\))?'
            )
        match = r.search ('WITH_ALOHA_EXCEPTION_HANDLERS')





More information about the Python-list mailing list