2012-05-01 36 views
1

私はいくつかのテキストデータを持つファイルを持っています。このファイルから私の興味深い文字列をすべて取得する必要があります。すべての興味深い文字列は、 "\ x01 \ x00 \ x00 \ x00"と "\ x00"で囲まれています。私はこれらの文字列を見つけるためにfolowing正規表現を使用しようとします:ユニコード文字列の正規表現

(\x01\x00\x00\x00[\u0000-\uFFFF]+\x00) 

しかし正しく動作しません。私は間違って何をしていますか?完全なコードはここにある:

# -*- coding: utf-8 -*- 

import re 

file = open(r"H:\1705\test.adb") 
temp = file.readlines() 
resString = "" 
for line in temp: 
    resString += line 
p = re.compile(ur"(\x01\x00\x00\x00[\u0000-\uFFFF]+\x00)", re.UNICODE) 
res = p.finditer(resString) 
for match in res: 
    print match.group()[0].decode("cp1251") 
+0

ユニコードの場合、それはどのエンコードですか?なぜファイルを開くときにそのエンコーディングからデコードしていないのですか?なぜあなたは 'cp1251'からデコードしていますか? – beerbajay

答えて

0

正規表現ではバックスラッシュはあなたが\.を使用する正規表現を使用してドットを検索したい場合例えば、彼らの特別な意味を抑制するために、特殊文字をエスケープします。

は、このように、あなたがそうで

\\x01\\x00\\x00 

としているあなた、検索文字列で、その結果、\\を使用したいと思う、バックスラッシュを検索します。