首页 > 解决方案 > 带有字节确认的 Python3 正则表达式模式

问题描述

只是检查我是否对此有正确的处理,因为这似乎很奇怪。

我有一个小的 python3 脚本来查找文件中的子字符串,其中数据被放入各种 512 字节块中。因此,字符串可能会被拆分。一种天真的方法将子字符串拆分为各种成对组合,将它们用作 re.findall 的模式。但是,必须转义正则表达式模式中的特殊字符:

>>> a=b'1$2'
>>> s=b'1231$234'
>>> re.findall (a,s)
[]     # fails as '$' in a is interpreted as regex 'end of line'
>>> c=b'1\$2'
>>> re.findall(c,s)
[b'1$2']

如果我想在上面的代码中迭代组成 c 的对,有没有简单的方法可以避免将 '\' 视为特殊字符?从模式定义语言来看是有道理的,使用 '\' 作为转义字符意味着 c[:2] 是非法模式(“1\”)。但这是一种特殊情况,如果没有它会很好。

标签: pythonarraysregex

解决方案


推荐阅读