older versions of PCRE support in grep used multiline mode by default, which
seems to be required by your expression to work and is also on by default in
the regex site.

you can add it back using an internal option[1] from PCRE, as shown in the
following modified expression from your original example:

/\A(?m:\s*^(?:#\w+.*\s*|extern\s+.+)$)*+(?<namespace>\s*namespace(?:\s+utTestNamespace\s*(?>(?<block>{(?:[^{}]*(?&block)*)*}))|(\s*[\w:]*\s*{)(?&namespace)\s*}))\s*\z/

Carlo

[1] https://www.pcre.org/current/doc/html/pcre2pattern.html#internaloptions



Reply via email to