Multiline regex
Andreas Tawn
andreas.tawn at ubisoft.com
Wed Jul 21 11:15:42 EDT 2010
> 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?
>
> Brandon L. Harris
Aren't you making life too complicated for yourself?
blocks = []
for line in yourFile:
if line.startswith("createNode"):
if currentBlock:
blocks.append(currentBlock)
currentBlock = [line]
else:
currentBlock.append(line)
blocks.append(currentBlock)
Cheers,
Drea
More information about the Python-list
mailing list