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

行からhexvalueを取得しようとしています。[38b]0xabc1234567890000000000000000000000000の形式の行の1つだけに16進値が必要です。すべての16進値は必要ありません。

行内のすべての16進値は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(\.*)は、2 番目のグループのピリオドをエスケープします。これは、0 個以上の任意の文字ではなく、0 個以上のピリオドに一致することを意味します。

の後のすべてに一致させたい場合は0x、バック スラッシュを削除します。

于 2013-01-31T00:22:19.127 に答える