Python 中字节的正则表达式
Regex on bytes in Python
我想在以下字节中提取 10.00ML:b'\x0200S10.00ML\x03'
所以我尝试提取 200S 和 \x03 之间的 10.00ML:
result = re.search(b'200S(.*)x03', b'\x0200S10.00ML\x03')
没有成功,没有找到元素:
AttributeError: 'NoneType' object has no attribute 'group'
仅使用字符串我有一个最小的工作示例:
test_string = 'a3223b'
result = re.search('a(.*)b', test_string)
print(result.group(1))
您可以使用
import re
text = b'\x0200S10.00ML\x03'
m = re.search(rb'\x0200S(.*?)\x03', text, re.S)
if m:
print( m.group(1).decode('utf-8') )
# => 10.00ML
请注意,\x02
和 \x03
是 START OF HEADING 和 START OF TEXT 控制字符,因此您不能将它们作为文字匹配。
我想在以下字节中提取 10.00ML:b'\x0200S10.00ML\x03' 所以我尝试提取 200S 和 \x03 之间的 10.00ML:
result = re.search(b'200S(.*)x03', b'\x0200S10.00ML\x03')
没有成功,没有找到元素:
AttributeError: 'NoneType' object has no attribute 'group'
仅使用字符串我有一个最小的工作示例:
test_string = 'a3223b'
result = re.search('a(.*)b', test_string)
print(result.group(1))
您可以使用
import re
text = b'\x0200S10.00ML\x03'
m = re.search(rb'\x0200S(.*?)\x03', text, re.S)
if m:
print( m.group(1).decode('utf-8') )
# => 10.00ML
请注意,\x02
和 \x03
是 START OF HEADING 和 START OF TEXT 控制字符,因此您不能将它们作为文字匹配。