Brandon Harris wrote: > I'm trying to read in and parse an ascii type file that contains > information that can span several lines. > Example: > > createNode animCurveTU -n "test:master_globalSmooth"; > setAttr ".tan" 9; > setAttr -s 4 ".ktv[0:3]" 101 0 163 0 169 0 201 0; > setAttr -s 4 ".kit[3]" 10; > setAttr -s 4 ".kot[3]" 10; > createNode animCurveTU -n "test:master_res"; > setAttr ".tan" 9; > setAttr ".ktv[0]" 103 0; > setAttr ".kot[0]" 5; > createNode animCurveTU -n "test:master_faceRig"; > setAttr ".tan" 9; > setAttr ".ktv[0]" 103 0; > setAttr ".kot[0]" 5; > > I'm wanting to grab the information out in chunks, so > > createNode animCurveTU -n "test:master_faceRig"; > setAttr ".tan" 9; > setAttr ".ktv[0]" 103 0; > setAttr ".kot[0]" 5; > > would be what my regex would grab. > I'm currently only able to grab out the first line and part of the > second line, but no more. > regex is as follows > > my_regexp = re.compile("createNode\ animCurve.*\n[\t*setAttr.*\n]*") > > I've run several variations of this, but none return me all of the > expected information. > > Is there something special that needs to be done to have the regexp grab > any number of the setAttr lines without specification?
Groups are marked with parens (...) not brackets [...]. >>> text = """\ ... createNode animCurveTU -n "test:master_globalSmooth"; ... setAttr ".tan" 9; ... setAttr -s 4 ".ktv[0:3]" 101 0 163 0 169 0 201 0; ... setAttr -s 4 ".kit[3]" 10; ... setAttr -s 4 ".kot[3]" 10; ... createNode animCurveTU -n "test:master_res"; ... setAttr ".tan" 9; ... setAttr ".ktv[0]" 103 0; ... setAttr ".kot[0]" 5; ... createNode animCurveTU -n "test:master_faceRig"; ... setAttr ".tan" 9; ... setAttr ".ktv[0]" 103 0; ... setAttr ".kot[0]" 5; ... """ >>> for m in re.compile("(createNode >>> animCurve.*\n(\s*setAttr.*\n)*)").finditer(text): ... print m.group(1) ... print "-" * 40 ... createNode animCurveTU -n "test:master_globalSmooth"; setAttr ".tan" 9; setAttr -s 4 ".ktv[0:3]" 101 0 163 0 169 0 201 0; setAttr -s 4 ".kit[3]" 10; setAttr -s 4 ".kot[3]" 10; ---------------------------------------- createNode animCurveTU -n "test:master_res"; setAttr ".tan" 9; setAttr ".ktv[0]" 103 0; setAttr ".kot[0]" 5; ---------------------------------------- createNode animCurveTU -n "test:master_faceRig"; setAttr ".tan" 9; setAttr ".ktv[0]" 103 0; setAttr ".kot[0]" 5; ---------------------------------------- Peter -- http://mail.python.org/mailman/listinfo/python-list