<regex>
: Limit backreference parsing to single digit for basic regular expressions by muellerj2 · Pull Request #5167 · microsoft/STL (original) (raw)
According to Sections 9.3.6 and 9.5.1 of the POSIX standard, a backreference is a backslash followed by a single digit, so \1
to \9
. Thus, \(a\)\10
is a valid basic regular expression matching the string aa0
, because \10
is a backreference to capture group 1 (\(a\)
) plus the digit 0. However, the regex parser currently rejects this regular expression because it interprets \10
as a backreference to capture group 10.
After this PR, the parser only reads a single digit in basic regular expression (and grep) mode, so \10
is parsed correctly as a backreference to capture group 1 plus digit 0.