我有一个来自pexpect' s 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
答案 0 :(得分:3)
str()
调用会将您的bytes
对象转换为表示。标签将表示为字符序列'\'
和't'
,而不是实际标签:
>>> str(b'\t')
"b'\\t'"
不要将你的bytestring锤到像这样的字符串。 解码从字节到字符串,或者只使用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'