Python re.match 返回 None,如何修改搜索字符串?
以下是我的代码:
num1 -num2 num3: var.shift varstate=shift, var3=num, var4=False/True, Shift 0xabc5d
num1 -num2 num3: var.shift varstate=shift, var3=num, var4=False/True, Shift 0xabc08
num1 -num2 num3: var.shift varstate=shift, var3=num, var4=False/True, Shift [38b]0xabc34
我想从这些代码行中提取出一个十六进制的值。我只需要其中一行的十六进制值,格式是[38b]0xabc1234567890000000000000000000000000。我不需要所有的十六进制值。
我所有的十六进制值都是以0x开头的,所以我在re.match中使用了这个前缀。
#!/usr/bin/env python
import sys
import re
import binascii
import string
value_file = open("test2.txt","r")
file2 = open("out.txt", "w")
for line in value_file:
line_string = str(line)
line_nospace = line.replace(" ", "")
lines_cont = line_nospace.rstrip("\n")
reg_match = re.match(r'\[([38b]]*)\](0-9a-zA-Z)', lines_cont)
print reg_match
1 个回答
2
你的正则表达式 (.*) 0x(\.*)
中,第二组的句点被转义了,这意味着它在匹配零个或多个句点,而不是零个或多个任意字符。
如果你想匹配 0x
后面的所有内容,就把反斜杠去掉。