top | item 20425233

(no title)

jalada | 6 years ago

Yes. I think HN stole your asterisks. You meant:

  /.*=.*/ becomes /[^=]*=.*/
That is, zero or more 'not-equals-sign-characters', followed by an equals sign.

Where the first regex is 57 steps for x=xxxxxxxxxxxxxxxxxxxxxxxx, the second is just 7.

Avoid using greedy .* for backtracking regex engines! Give your greedy regex engine the hints it needs to do what it does best.

discuss

order

wbl|6 years ago

Don't use a backtracking regex engine is probably the better lesson. I want a tool that won't unexpectedly poke me with the sharp bit.

Thorrez|6 years ago

The article says that even lazy matches can have catastrophic backtracking.