Python re.match返回none。如何修改搜索字符串?

时间:2013-01-31 00:18:22

标签: python regex line

以下是我的专栏:

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

答案 0 :(得分:2)

您的正则表达式(.*) 0x(\.*)会转义第二组中的句点,这意味着它匹配零个或多个句点而不是零个或多个任意字符。

如果要匹配0x之后的所有内容,请删除反斜杠。