Hi,
When testing the behavior of (*SKIP) to understand its underlying implementation, I constructed the following regex to verify my understanding: /(?=..(*MARK:a))(*SKIP:a)(*FAIL)|./g Test input: aaaaaaaaaaaaaaabbbbbbbbbbbaa With the assumption that (*SKIP) fails the attempt at the current starting position and bump along to the position where (*SKIP) is at, I anticipated two cases: 1) (*MARK:a) somehow stores the position, so when (*SKIP) fails the current attempt, it bumps along 2 characters ahead. 2) (*MARK:a) is not backtracked into, so when (*SKIP) fails the current attempt and bumps along by 1 character as per normal. In either case, I expect there can only be at most one match at the end, since it's the only place the look-ahead fails. However, as it turns out, all characters are matched. Running the debugger on regex101 (https://regex101.com/r/dA9tI1/1) reveals that it tries the first branch twice, and manages to try the second branch and succeeds. What is the expected behavior here? -- ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev