RegEX在行尾

时间:2018-10-09 17:22:19

标签: python regex

我正在尝试提取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

Python代码

文本文件内容:

 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

1 个答案:

答案 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

来自documentation

  

如果指定了DOTALL标志,则它匹配任何字符   包括换行符。