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

            Bug ID: 2770
           Summary: Delimiters used within \Q..\E are marked unrecognized
           Product: PCRE
           Version: 10.34 (PCRE2)
          Hardware: All
                OS: Windows
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Code
          Assignee: philip.ha...@gmail.com
          Reporter: online...@protonmail.com
                CC: pcre-dev@exim.org

If a regex delimiter is encountered within a \Q..\E block, it should be
recognized as a literal character, not as a delimiter. Below, I have specified
4 math operators: [-+*/]. Since my delimiter is a forward-slash, I started the
character group, then used \Q, then entered the raw (unescaped) math
characters, then used \E, and finally closed the character group.

PCRE2 version 10.34 2019-11-21
  re> /[\Q-+*/\E]/g
** Unrecognized modifier 'E' in 'E]/g'
  re> /[\Q-+*\/\E]/g
data> a+b-c/d*e\\f
 0: +
 0: -
 0: /
 0: *
 0: \
data>
  re> @[\Q-+*/\E]@g
data> a+b-c/d*e\\f
 0: +
 0: -
 0: /
 0: *
data>

You notice that pcre2test gives an error when attempting to use the delimiter
within \Q..\E, but accepted the pattern when I escaped it as: [-+*\/]

However, the matched string now matches the backslash character in the data,
which is not desired.

If the delimiter is changed, then the raw [-+*/] characters are accepted, and
the backslash character is not matched.

-- 
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