https://bugs.exim.org/show_bug.cgi?id=2645

Philip Hazel <philip.ha...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |INVALID
             Status|NEW                         |RESOLVED

--- Comment #1 from Philip Hazel <philip.ha...@gmail.com> ---
This is not a bug. It is a documented effect. There is an option to change the
default behaviour; this is what the documentation says:

"PCRE2_SUBSTITUTE_UNSET_EMPTY causes unset capture groups (including unknown
groups when PCRE2_SUBSTITUTE_UNKNOWN_UNSET is set) to be treated as empty
strings when inserted as described above. If this option is not set, an attempt
to insert an unset group causes the PCRE2_ERROR_UNSET error. This option does
not influence the extended substitution syntax described below."

The extended syntax (applied when the PCRE2_SUBSTITUTE_EXTENDED option is set)
provides a more extensive facility:

  ${<n>:-<string>}
  ${<n>:+<string1>:<string2>}

"As before, <n> may be a group number or a name. The first form specifies a
default value. If group <n> is set, its value is inserted; if not, <string> is
expanded and the result inserted. The second form specifies strings that are
expanded and inserted when group <n> is set or unset, respectively."

If your regex101 example is using PCRE2, presumably it is setting the
PCRE2_SUBSTITUTE_UNSET_EMPTY option.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to