Time out a regular expression in Python 2.6.4?
steve at holdenweb.com
Tue Feb 16 02:06:08 CET 2010
Jonathan Gardner wrote:
> On Feb 15, 7:59 am, Steve Holden <st... at holdenweb.com> wrote:
>> pyt... at bdurham.com wrote:
>>> Is there any way to time out a regular expression in Python 2.6.4?
>>> Motiviation: Our application allows users to enter regular expressions
>>> as validation criteria. If a user enters a pathological regular
>>> expression, we would like to timeout the evaluation of this expression
>>> after a short period of time.
>> Python itself does not contain any mechanism to terminate an operation
>> if it takes too much time.
>> One approach would be to run the regex in a subprocess, and apply
>> process limits to terminate that subprocess if it ran too long.
>> This group being what it is you are likely to receive other, better
>> suggestions too.
> I'm not sure how exactly the re module is implemented, but since I
> assume a great chunk is in C code, you may get away with a single
> process and multiple threads. One thread will watch the process, or
> have a timer event set to go off at a certain point. The other will
> actually run the regex and get killed by the timer process if it
> doesn't finish in time.
That would be a great idea if it were possible to kill a thread form
outside. Unfortunately it's not, so the best you can do is set a flag
and have it queried periodically. This is not practical during re matching.
Steve Holden +1 571 484 6266 +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010 http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS: http://holdenweb.eventbrite.com/
More information about the Python-list