The retarded cousin - that's me! I keep getting confused by the caret - sometimes it works - sometimes it's better with backslash-n Yes - retarded cousin, I guess.
The file format is a config-track for a multitrack recording software, which i need to automate a bit. I can start it from the command line and have it create a remix (using various vst and other effects) Sometimes, however, we may have deleted the 'guitar.wav' and thus have to leave out that track from the config-file or the rendering won't work. Since it seems 'whitespace matters' in the file I have the following code to get me a tag: I cost me a broken cup and coffee all over the the kitchen tiles - temper! I still don't understand why I have to use \n instead of ^ af the start of TAGCONTENTS and TAGEND. But I can live with it! Thank you for your kind and humorous help! kind retards jorgen / de mente www.myspace.com/dementedk ------------------------------------------------------------ import re TESTTXT=open('003autoreaper.rpp').read() # whole file now def getLevel(levl): rex = re.compile( r'(?m)' # multiline r'(?P<TAGSTART>^ {%d}[<])' # the < character r'(?P<TAGNAME>[a-zA-Z0-9_]*)' # the tagname r'(?P<TAGDATA>[\S \t]*?$)' # the rest of the tagstart line r'(?P<TAGCONTENTS>(\n {%d}[^>][\S \t]*$){0,})' # all the data coming before the > r'(?P<TAGEND>\n {%d}>[\S \t]*$)' %(levl,levl,levl) # the > character ) return rex for i in getLevel(2).finditer(TESTTXT): myMatch = i.groupdict() print i.group('TAGNAME'),i.start('TAGSTART'), i.end('TAGEND') #print i.groups() if myMatch['TAGNAME'] == 'TRACK': #print i.groups() for j in getLevel(6).finditer(TESTTXT,i.start('TAGSTART'), i.end('TAGEND')): myMatch2 = j.groupdict() #print j.groups() print j.group('TAGNAME'),j.start('TAGSTART'), j.end('TAGEND') if myMatch2['TAGNAME'] == 'SOURCE': for m in myMatch2: print m, myMatch2[m] -- http://mail.python.org/mailman/listinfo/python-list