我正在尝试提取String Hex-STRING直到行尾。但是它匹配的是Hex-STRING: 84 16 F9 B0 05 1F 70 4F 57 4C A8 1F 60 E3 27 A1
E0 CD C4 E9 84 C3 68 53 C4 E9 84 C9 7A BB C4 E9 84 AC
。
此表达式中缺少什么?我已经尝试包含$
,但是它不起作用。
RegEX:Hex-STRING:\s(.+)
测试字符串:
iso.3.6.1.4.1.25355.3.2.6.4.2.5.1.7.4.2.13.36 = Hex-STRING: 84 16 F9 B0 05 1F 70 4F 57 4C A8 1F 60 E3 27 A1
E0 CD C4 E9 84 C3 68 53 C4 E9 84 C9 7A BB C4 E9 84 AC
C3 68 53 27 CC 58 97 84 AC 74 F7 60 E3 27 CC 58 97
84 AC 74 F7 60 E3 27 CC 58 97 84 AC 74 F7 60 E3 27
CC 58 97
84 AC 74 F7 60 E3 27 C3 68 53 84 AC 74 F7 60 E3 27 CC
58 97
文本文件内容:
iso.3.6.1.4.1.25355.3.2.6.3.2.1.11.1.2.4 = STRING: "785c720855c8"
iso.3.6.1.4.1.25355.3.2.6.4.2.5.1.7.1.2.4.9 = Hex-STRING: 84 16 F9 AF CF 75 84 16 F9 AF E1 35 50 C7 BF F2
F8 4B 70 4F 57 3A C6 23 70 4F 57 3E C5 CD
代码:
w = open("text.txt","r")
for item in w:
for match in re.findall(r'Hex-STRING:\s*(.+)',item):
print match
输出:
84 16 F9 AF CF 75 84 16 F9 AF E1 35 50 C7 BF F2
预期输出:
84 16 F9 AF CF 75 84 16 F9 AF E1 35 50 C7 BF F2
F8 4B 70 4F 57 3A C6 23 70 4F 57 3E C5 CD
答案 0 :(得分:0)
您可以这样做:
import re
text = """iso.3.6.1.4.1.25355.3.2.6.4.2.5.1.7.4.2.13.36 = Hex-STRING: 84 16 F9 B0 05 1F 70 4F 57 4C A8 1F 60 E3 27 A1
E0 CD C4 E9 84 C3 68 53 C4 E9 84 C9 7A BB C4 E9 84 AC
C3 68 53 27 CC 58 97 84 AC 74 F7 60 E3 27 CC 58 97
84 AC 74 F7 60 E3 27 CC 58 97 84 AC 74 F7 60 E3 27
CC 58 97
84 AC 74 F7 60 E3 27 C3 68 53 84 AC 74 F7 60 E3 27 CC
58 97"""
result = re.search("Hex-STRING:\s(.+)$", text, re.DOTALL)
print(result.group())
输出
Hex-STRING: 84 16 F9 B0 05 1F 70 4F 57 4C A8 1F 60 E3 27 A1
E0 CD C4 E9 84 C3 68 53 C4 E9 84 C9 7A BB C4 E9 84 AC
C3 68 53 27 CC 58 97 84 AC 74 F7 60 E3 27 CC 58 97
84 AC 74 F7 60 E3 27 CC 58 97 84 AC 74 F7 60 E3 27
CC 58 97
84 AC 74 F7 60 E3 27 C3 68 53 84 AC 74 F7 60 E3 27 CC
58 97
如果指定了DOTALL标志,则它匹配任何字符 包括换行符。