A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2011-March/109486.html below:

[Python-Dev] Adding function checks to regex

[Python-Dev] Adding function checks to regexMRAB python at mrabarnett.plus.com
Sat Mar 19 00:04:58 CET 2011
Some of those who are relative new to regexes sometimes ask how to write 
a regex which checks that a number is in a range or is a valid date. 
Although this may be possible, it certainly isn't easy.

 From what I've read, Perl has a way of including code in a regex, but I 
don't think that's a good idea

However, it occurs to me that there may be a case for being able to call 
a supplied function to perform such checking.

Borrowing some syntax from Perl, it could look like this:

     def range_check(m):
         return 1 <= int(m.group()) <= 10

     numbers = regex.findall(r"\b\d+\b(*CALL)", text, call=range_check)

The regex module would match as normal until the "(*CALL)", at which 
point it would call the function. If the function returns True, the 
matching continues (and succeeds); if the function returns False, the 
matching backtracks (and fails).

The function would be passed a match object.

An extension, again borrowing the syntax from Perl, could include a tag 
like this:

     numbers = regex.findall(r"\b\d+\b(*CALL:RANGE)", text, 
call=range_check)

The tag would be passed to the function so that it could support 
multiple checks.

Alternatively, a tag could always be passed; if no tag is provided then 
None would be passed instead.

There's also the additional possibility of providing a dict of functions 
instead and using the tag to select the function which should be called.

I'd be interested in your opinions.
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4