test look-behind, '}' so succeeds test look-ahead, '[' also succeeds code block encountered, execute advance pointer one place
That last step is wrong. It should be
advance pointer the length of the match
The length of the match is zero in the case where the lookahead and lookbehind is used. Since the pointer is not advanced, the regexp matches everything twice. Only a final check prevents the regexp from returning an identical match.
test look-behind, '}' so succeeds test look-ahead, '[' also succeeds code block encountered, execute same match? no, continue advance pointer the length of the match (0) test look-behind, '}' so succeeds test look-ahead, '[' also succeeds code block encountered, execute same match? yes, backtrack
More on this in Re: Regex code block executes twice per match using look-arounds.
In reply to Re^3: Regex code block executes twice per match using look-arounds
by ikegami
in thread Regex code block executes twice per match using look-arounds
by johngg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |