Multiline regex
Peter Otten
__peter__ at web.de
Wed Jul 21 11:16:04 EDT 2010
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
More information about the Python-list
mailing list