On 2014-07-06 19:57, rxjw...@gmail.com wrote:
On Python website, it says that the following match can reach 'abcb' in 6 steps:

A step-by-step example will make this more obvious. Let's consider the 
a[bcd]*b. This matches the letter 'a', zero or more letters from the class 
and finally ends with a 'b'. Now imagine matching this RE against the string

The end of the RE has now been reached, and it has matched abcb.  This
demonstrates how the matching engine goes as far as it can at first, and if no
match is found it will then progressively back up and retry the rest of the RE
again and again. It will back up until it has tried zero matches for [bcd]*, and
if that subsequently fails, the engine will conclude that the string doesn't
match the RE at all.

I write the following code:

import re

line = "abcdb"

matchObj = re.match( 'a[bcd]*b', line)

if matchObj:
    print "matchObj.group() : ", matchObj.group()
    print "matchObj.group(0) : ", matchObj.group()
    print "matchObj.group(1) : ", matchObj.group(1)
    print "matchObj.group(2) : ", matchObj.group(2)
    print "No match!!"

In which I have used its match pattern, but the result is not 'abcb'

That's because the example has 'abcb', but you have:

    line = "abcdb"

(You've put a 'd' in it.)

Only matchObj.group(0): abcdb

displays. All other group(s) have no content.

There are no capture groups in your regex, only group 0 (the entire
matched part).

How to write this greedy search?


Reply via email to