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