用re模块处理bytes-like对象

2020年10月5日 / 8次阅读 / Last Modified 2020年10月6日
re模块

python中的bytes-like对象为bytes和bytearray,re模块一样可以对它们进行正则表达式的匹配。

>>> import re
>>> a = b'abcde 12345'
>>> re.search(rb'\d+', a)
<re.Match object; span=(6, 11), match=b'12345'>
>>> re.search(rb'\w+', a)
<re.Match object; span=(0, 5), match=b'abcde'>

小技巧就是,在正则表达式前面加 b 。rb连在一起,就是raw bytes的意思。

在正则表达式中,可以直接使用\x:

>>> import re
>>> re.search(rb'\x00', bytes.fromhex('000102030405'))
%lt;re.Match object; span=(0, 1), match=b'\x00'>
>>> re.search(rb'\x00{2}', bytes.fromhex('000102030405'))
>>> re.search(rb'\x00{2}', bytes.fromhex('00000102030405'))
<re.Match object; span=(0, 2), match=b'\x00\x00'>
>>> re.search(rb'\x00\x01', bytes.fromhex('00000102030405'))
<re.Match object; span=(1, 3), match=b'\x00\x01'>

how nice!

-- EOF --

本文链接:https://www.pynote.net/archives/2536

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top