encode('string-escape') 解决
比如想匹配'x0ex0a'中的'x'后的内容,这里希望把'x0e'作为一个字符串,那么其中的应该被转义。
未加转义的正则:
p = '(?<=x)[0-9A-Za-z]{2}'
直接这样写会报错,需要给转义,于是变为
p = '(?<=\x)[0-9A-Za-z]{2}'
但由于使用的时候,会先将p的内容转义,然后匹配,所以又变成了x和原始数据匹配,又会出错。解决:
p = '(?<=\x)[0-9A-Za-z]{2}'.encode('string-escape')
或者
p = '(?<=\\x)[0-9A-Za-z]{2}'
测试代码:
import re a = "\x0e\x0b\x0c" print a p = '(?<=\x)[0-9A-Za-z]{2}'.encode('string-escape') pattern = re.compile(p) m = pattern.findall(a) print m
输出:
x0ex0bx0c ['0e', '0b', '0c']