[Please use the mailing list for bug reports and other things.]
Hi!
On Mon, 19 Sep 2005 11:40:13 +0000, Björn Róbertsson bjornr@simi.is wrote:
When I select a part of or the whole regular expression the CPU load goes up to 100 % and habitually the best way is to do End Task.
The machine runs Windows XP, firewall, antivirus et. al.
I am including a screenshot of one particular regexp which exhibits this behaviour.
This is a cpu graph, the tops (100%) occur when: the window is brought into focus while the regexp is highlighted, also when the regexp is highlighted (i.e. from back to front), when it’s changed, when the window is moved and so on.
I do not believe my regular expression to be very complicated but something is not right.
Your regular expression (that I include here for reference)
^\S+.*\S+.*\S+.*\d+:\d+:\d+ \d+ ([.0-9]+.1.13.10) Normal.*" ([.0-9]+) -.* ([.0-9]+)
is formed in a way that leads to an exponential growth in backtracking - the behaviour that you see is what I would expect. Note that in particular each ".*" forces the engine to go to the end of the target string and from there retry each position backwards. These attempts will be nested. Try the stepper to see what I mean.
You should rewrite the regex to avoid this.
Cheers, Edi.