diff --git a/Modules/regexpr.c b/Modules/regexpr.c index 2d30171f421..663e1de00a0 100644 --- a/Modules/regexpr.c +++ b/Modules/regexpr.c @@ -486,7 +486,13 @@ void re_compile_initialize(void) for (a = 'A'; a <= 'Z'; a++) re_syntax_table[a] = Sword; for (a = '0'; a <= '9'; a++) - re_syntax_table[a] = Sword | Sdigit; + re_syntax_table[a] = Sword | Sdigit | Shexdigit; + for (a = '0'; a <= '7'; a++) + re_syntax_table[a] |= Soctaldigit; + for (a = 'A'; a <= 'F'; a++) + re_syntax_table[a] |= Shexdigit; + for (a = 'a'; a <= 'f'; a++) + re_syntax_table[a] |= Shexdigit; re_syntax_table['_'] = Sword; for (a = 9; a <= 13; a++) re_syntax_table[a] = Swhitespace; diff --git a/Modules/regexpr.h b/Modules/regexpr.h index 91f00b9504c..9ac2ab96c0f 100644 --- a/Modules/regexpr.h +++ b/Modules/regexpr.h @@ -70,6 +70,8 @@ typedef struct re_registers #define Sword 1 #define Swhitespace 2 #define Sdigit 4 +#define Soctaldigit 8 +#define Shexdigit 16 /* Rename all exported symbols to avoid conflicts with similarly named symbols in some systems' standard C libraries... */