データを抽出する正規表現を含むバイナリ ファイルを調べていますが、追跡できない正規表現に問題があります。
これは私が問題を抱えているコードです:
z = 0
for char in string:
self.response.out.write('|%s' % char.encode('hex'))
z+=1
if z > 20:
self.response.out.write('<br>')
break
title = []
string = re.sub('^\x72.([^\x7A]+)', lambda match: append_match(match, title), string, 1)
print_info('Title', title)
def append_match(match, collection, replace = ''):
collection.append(match.group(1))
return replace
これを実行したときの文字列の最初の 20 文字の内容は次のとおりです。
|72|0a|50|79|72|65|20|54|72|6f|6c|6c|7a|19|54|72|6f|6c|6c|62|6c
^ を削除した場合を除き、何も返されません。この場合、54726F6C6C である "Troll" (引用符ではない) が返されます。私が読んだように、\ x7aまでのすべてを返す必要があります。
何が起きてる?