From 25160f1c08235cf5b6a9617c5640380618a0f6ff Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sat, 18 Apr 2015 17:28:49 +0000 Subject: [PATCH] regex: treat \+, \? as repetitions in BRE These are undefined escape sequences by the standard, but often used in sed scripts. --- src/regex/regcomp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/regex/regcomp.c b/src/regex/regcomp.c index ccd3755b..b3dbb252 100644 --- a/src/regex/regcomp.c +++ b/src/regex/regcomp.c @@ -838,6 +838,9 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s) s--; break; case '{': + case '+': + case '?': + /* extension: treat \+, \? as repetitions in BRE */ /* reject repetitions after empty expression in BRE */ if (!ere) return REG_BADRPT; @@ -993,7 +996,8 @@ static reg_errcode_t tre_parse(tre_parse_ctx_t *ctx) } if (*s=='\\' && ere) break; - if (*s=='\\' && s[1]!='{') + /* extension: treat \+, \? as repetitions in BRE */ + if (*s=='\\' && s[1]!='+' && s[1]!='?' && s[1]!='{') break; if (*s=='\\') s++;