Thank you Carlo. Replacing (?: -> (?m: Solve my issue. Thank you, Sławek
-----Original Message----- From: Carlo Marcelo Arenas Belón <care...@gmail.com> Sent: Monday, November 8, 2021 9:29 PM To: Skrzyniarz, Slawomir (Nokia - PL/Krakow) <slawomir.skrzyni...@nokia.com> Cc: 51...@debbugs.gnu.org Subject: bug#51458: grep PCRE - '^' and '$' are not recognized as begin and end of line for multiline strings 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