0

以下是我的台词:

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
4

1 回答 1

2

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

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

于 2013-01-31T00:22:19.127 回答