Paul_was_taken Paul_was_taken - 11 days ago 6
Python Question

Regex for parsing ID3v2 Tag

String = "TIT2\x00\x00\x00\x12\x00\x00\x00Spicks And SpecksTRCK\x00\x00\x00\x02\x00\x00\x006TYER\x00\x00\x00\x05\x00\x00\x001992TCON\x00\x00\x00\x03\x00\x00\x0013TALB\x00\x00\x00\x19\x00\x00\x00Best Sellers Hits (CD 1)PRIV\x00\x00\x00\x00\x00WM/MediaClassPrimaryID\x00\xbc}\xd1#\xe3\xe2K\x86\xa1H\xa4*(D\x1ePRIV\x00\x00\x00)\x00\x00WM/MediaClassSecondaryID\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PRIV\x00\x00\x00\x0e\x00\x00PeakValue\x00Dq\x00\x00PRIV\x00\x00\x00\x11\x00\x00AverageLevel\x00\xf0\x13\x00\x00TPE1\x00\x00\x00\t\x00\x00\x00Bee Gees\x00\x00\x00\x00\x00\x00\x00\x00"


This is ID3V2.3 tag and I need to parse it the following way "Tag TagInfo".
I've tried this regex
".+(?=[A-Z0-9]{4})"
. It works, if I use
re.search()
but it doesn't work for
re.findall()
.

Answer

Try this one

(T[A-Z0-9]{3})(.+?)(?=T[A-Z0-9]{3}|$)

You'll get two matches, the first match is the tag, the second match is the text between two tags (or between the last tag and the end of line)

Comments