Python强制十六进制转义为正则表达式语句

时间:2017-10-26 19:43:29

标签: python regex escaping

这个问题是关于如何(以及最终为什么)python在编译正则表达式语句时包含十六进制转义符。

正则表达式声明(简化)如下:

my_regex = re.compile('^((?:([bye])(?!.*\2)){3})$', re.MULTILINE)

我希望这能找到字母' b',' y'和' e'的所有组合。 (例如' bye',' yeb',' eyb')。然而,它找到了所有的排列,即“#by byy' ' BBY' ' BBB'等

我终于发现python正在将上面的表达式转换为:

my_regex = re.compile('^((?:([bye])(?!.*\x02)){3})$', re.MULTILINE)

差别很小,

\2

\x02 

但足以导致结果包含重复的字母。

如何阻止python在正则表达式语句中包含十六进制转义符?为什么把它放在那里?此外,为什么十六进制转义导致重复的字母匹配,否则它们不会?

hex escaped

not escaped

0 个答案:

没有答案