Ant wrote:
> Look at the following minimal example:
>> >>> import re
> >>> p = re.compile(r"(:?Test) (String)")
Bzzzzzt! Sorry, PBKAC.
The correct syntax is (?:foo)
You have (:?foo)
which matches an optional colon followed by foo.
Now quick kill your post before the effbot spots it :-)
> >>> m = p.search("This is a Test String OK?")
> >>> m.groups()
> ('Test', 'String')
>> I would have expected this to produce:
>> ('String')
>> since (:?...) should be a non-capturing group. From the module
> reference:
>> (?:...)
> A non-grouping version of regular parentheses. Matches whatever
> regular expression is inside the parentheses, but the substring matched
> by the group cannot be retrieved after performing a match or referenced
> later in the pattern.