On Wed, Jul 29, 2009 at 11:35 AM, gpo <[email protected]> wrote:
>
> My regex is being run in both Python v2.6 and v3.1
> For this example, I'll give one line. This lines will be read out of log
> files. I'm trying to get the GUID for the User ID to query a database with
> it, so I'd like a sub match. Here is the code
> -----------------
> import re
> line = '>Checking Privilege for UserId:
> {88F96ED2-D471-DE11-95B6-0050569E7C88}, PrivilegeId:
> {71AD2527-8494-4654-968D-FE61E9A6A9DF}. Returned hr = 0'
> pUserID=re.compile('UserID: \{(.+)\}',re.I) #Sub match is one or more
> characters between the first set of squigglies immediately following
> 'UserID: '
>
> #the output is:
> (re.search(pUserID,line)).group(1)
> '88F96ED2-D471-DE11-95B6-0050569E7C88}, PrivilegeId:
> {71AD2527-8494-4654-968D-FE61E9A6A9DF'
> -----------
> Why isn't the match terminating after it finds the first \} ?
> --
> View this message in context:
> http://www.nabble.com/Issues-with-regex-escaping-on-%5C%7B-tp24724060p24724060.html
> Sent from the Python - tutor mailing list archive at Nabble.com.
>
> _______________________________________________
> Tutor maillist - [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
your grouping (.+) appears to be greedy, you can make it non-greedy with a
question mark
EX:
pUserID=re.compile('UserID:\s+{(.+?)}',re.I)
Vince
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor