On Thu, 01 Feb 2007 08:53:55 -0800, Ravi Teja wrote: >> > > It search a text inside that hex value. >> > > It works perfecly on a txt file but if I open a binary file (.exe,.bin >> > > ecc...) with the same value it wont work, why? >> > > Please help! >> >> > Because the pattern isn't in the file, perhaps. >> >> This pattern IS in the file (I made it and I double check with an hex >> editor). >> It display the file correcltly (print line) but... > > No! Peter is right. Regular expressions match ASCII representation of > data, not hex. In simple terms, do you see your pattern when you open > the file in notepad (or other text editor)? You do not use regex to > search binary files.
I don't see why not. >>> pattern = "NULL\0" >>> source = "\0\01\02-more-bytes-here-NULL\0-more-bytes" >>> m = re.search(pattern, source) >>> m.group() 'NULL\x00' >>> m.span() (20, 25) Here's the Original Poster's code again: regex = re.compile(r"(?si)(\x8B\xF0\x85\xF6)(?P<contents>.*) (\xC6\x44\x24)",re.IGNORECASE) file = open(fileName, "rb") for line in file: if (match): print line file.close() I suggest that the reason it doesn't work is because he never actually uses the regex. Presumably the name "match" was assigned somewhere else to a false value, and so the code simply walks through the file doing nothing. -- Steven D'Aprano -- http://mail.python.org/mailman/listinfo/python-list