【python】正则表达式中的转义问题
2017-06-05 22:09
253 查看
encode('string-escape') 解决
比如想匹配'\x0e\x0a'中的'\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}'
测试代码:
输出:
比如想匹配'\x0e\x0a'中的'\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
输出:
\x0e\x0b\x0c ['0e', '0b', '0c']
相关文章推荐
- Python 正则表达式(转义问题)
- Python 正则表达式(转义问题)
- Python中正则表达式对中文的匹配问题
- Python中正则表达式对中文的匹配问题
- 关于VIM 正则的问题,MLGB CTMD vim 正则表达式中 + * 这些是要有\转义,但是[] {} 是不用转义的。
- Python采集网页时正则表达式匹配换行符的问题
- python 正则表达式反向引用的问题
- python字符串转义与正则表达式特殊字符转义
- python正则表达式转义注意事项
- Python正则表达式中元字符的转义处理
- 关于Python正则表达式 findall函数问题详解
- python正则表达式修复网站文章字体不统一问题
- 关于Python中正则表达式的反斜杠问题
- sed 正则表达式的'转义问题
- python正则表达式中的括号匹配问题
- Python从文件中读取字符串,用正则表达式匹配中文字符的问题
- 关于Python正则表达式的区分大小写的问题
- 总结一下python正则表达式中的变量使用问题
- regex 正则表达式 需要转义的特殊字符 以及 java、python实现
- Java正则表达式转义问题