Paul_was_taken Paul_was_taken - 1 year ago 132
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 Source

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)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download