re.search 不匹配字节串
re.search not matching the byte string
我有一个字符串对象来自预期的 session.before
。
据此,我正在尝试 re.search
使用以下正则表达式获取设备 ID。但它不匹配。
print (str(sess.before))
b'\r\n* daemon not running. starting it now on port 5037 *\r\n* daemon started successfully *\r\n353651\tdevice\r\n\r\n\r\n'
device_id = re.search ('([0-9a-zA-Z]+)[\t ]+device', str(sess.before))
print (device_id)
None
str()
调用将您的 bytes
对象转换为 表示。制表符将表示为字符序列 '\'
和 't'
,而不是实际的制表符:
>>> str(b'\t')
"b'\t'"
不要将你的字节串敲成那样的字符串。从字节 解码 到字符串,或者只使用 bytes
正则表达式:
device_id = re.search(b'([0-9a-zA-Z]+)[\t ]+device', sess.before)
现在device_id
是匹配对象;你可能想在上面调用 .group(1)
:
>>> import re
>>> before = b'\r\n* daemon not running. starting it now on port 5037 *\r\n* daemon started successfully *\r\n353651\tdevice\r\n\r\n\r\n'
>>> re.search(b'([0-9a-zA-Z]+)[\t ]+device', before)
<_sre.SRE_Match object; span=(89, 102), match=b'353651\tdevice'>
>>> re.search(b'([0-9a-zA-Z]+)[\t ]+device', before).group(1)
b'353651'
我有一个字符串对象来自预期的 session.before
。
据此,我正在尝试 re.search
使用以下正则表达式获取设备 ID。但它不匹配。
print (str(sess.before))
b'\r\n* daemon not running. starting it now on port 5037 *\r\n* daemon started successfully *\r\n353651\tdevice\r\n\r\n\r\n'
device_id = re.search ('([0-9a-zA-Z]+)[\t ]+device', str(sess.before))
print (device_id)
None
str()
调用将您的 bytes
对象转换为 表示。制表符将表示为字符序列 '\'
和 't'
,而不是实际的制表符:
>>> str(b'\t')
"b'\t'"
不要将你的字节串敲成那样的字符串。从字节 解码 到字符串,或者只使用 bytes
正则表达式:
device_id = re.search(b'([0-9a-zA-Z]+)[\t ]+device', sess.before)
现在device_id
是匹配对象;你可能想在上面调用 .group(1)
:
>>> import re
>>> before = b'\r\n* daemon not running. starting it now on port 5037 *\r\n* daemon started successfully *\r\n353651\tdevice\r\n\r\n\r\n'
>>> re.search(b'([0-9a-zA-Z]+)[\t ]+device', before)
<_sre.SRE_Match object; span=(89, 102), match=b'353651\tdevice'>
>>> re.search(b'([0-9a-zA-Z]+)[\t ]+device', before).group(1)
b'353651'