我有一个混合了ASCII和十六进制数据的字符串。我想以字节为单位计算字符串的长度。两个垂直条之间的数据代表HEX数据。
示例:s =" 2 | 00 00 00 06 00 00 00 |驱动器| 24 00 |"。对于此字符串,长度应为16个字节,因为两个十六进制数字表示一个字节。我尝试使用正则表达式在条形图之间提取数据:r' |。(。*?)|'但这匹配整个字符串。有帮助吗?谢谢
import re
s= "2|00 00 00 06 00 00 00|Drives|24 00|"
match = re.findall(r'|.(.*?)|', s)
答案 0 :(得分:1)
我认为你必须逃避|
\|
以匹配管道,否则就意味着or
。您也可以忽略此部分|.(
import re
s= "2|00 00 00 06 00 00 00|Drives|24 00|"
print(re.findall(r'\|(.*?)\|', s))
答案 1 :(得分:1)
你可以改变你的方法,实际上看表示十六进制数字。一对可以定义为
[a-f0-9]{2}
# a-f and 0-9 twice
<小时/> 现在,您只需要双方的边界并使其不区分大小写,
Python
可以
import re
s = "2|00 00 00 06 00 00 00|Drives|24 00|"
rx = re.compile(r'(?i)(\b[a-f0-9]{2}\b)')
byte = len(rx.findall(s))
print(byte)
<小时/> 对于你的字符串,这会产生
9