(|a) is apparently non-processable. Note that it is different from (a|) as the greadiness is different.
Support fo that type of patterns is needed for validating ReDoS fixes, as e.g. ([a-z]*?)a+x could be patched to (|[a-z]*?[^a])a+x (which is different from ([a-z]*?[^a]|)a+x).
So it's not always possible to validate that kind of patches because of this issue.
/cc @davisjam
(|a)is apparently non-processable. Note that it is different from(a|)as the greadiness is different.Support fo that type of patterns is needed for validating ReDoS fixes, as e.g.
([a-z]*?)a+xcould be patched to(|[a-z]*?[^a])a+x(which is different from([a-z]*?[^a]|)a+x).So it's not always possible to validate that kind of patches because of this issue.
/cc @davisjam