Is there any way to have an expression in brackets not be caught in a group?
E.g. i have an expression something like this:
(A(B|C)?) D (E(F|G)?)
Take note of the optional blocks (B|C)? and (F|G)? needing brackets.
I’m not interested in what was caught in these groups. All i want is to catch the full first and last block.
But because of the optional blocks, the group numbering will change and i can’t tell if (E(F|G)?) was caught as group 2 or 3.
Can i tell the expression to ignore the optional parts in the result groups, so the group numbering will stay the same? Or can i make optional catches always appear in groups – even when they’re null?
(E(F|G)?)will always be caught as group 3. The numbering is determined by the order of opening parentheses in the pattern string, which is:If
(B|C)does not occur in the input string thengroup(2)will return null, but the subsequent groups will not be renumbered.The only groups that do not influence numbering are non-capturing groups, e.g.
Example:
Output: