Matching of optional parts in regular expressions

Ulrich Schöbel usus at aladyn.de
Thu Jul 8 18:03:47 CEST 2004


In article <40ed1d8f.0407080602.bd6de25 at posting.google.com>,
	Markus.Elfring at web.de (Markus Elfring) writes:
> Does this example show an error in the implementation?

No. All three examples work absolutely correct.

> 
> % regexp {\s*(\d+)(?:%(\w+))?} {   !123!} z a b
> 1
> % foreach X {a b} {puts "$X=|[set $X]|"}
> a=|123|
> b=||

Regex is not anchored. It matches no whitespace (\s*),
three digits (\d+) and no word introduced by a % sign.

> % regexp {\s*(\d+)(?:%(\w+))?$} {   !123!} z a b
> 0

Same as before, but anchored at the end. The final ! is
not matched, so the entire regex doesn't match.

> % regexp {\s*(\d+)(?:%(\w+))?} {   456%} z a b
> 1
> % foreach X {a b} {puts "$X=|[set $X]|"}
> a=|456|
> b=||

Same as first example.

> 
> I think that the specified strings must not match to the pattern.
> How do you think about it?

Everything is working ok.

Best regards

Ulrich


-- 
For those of you who don't get this e-mail, let me know and I'll re-send it.



More information about the Python-list mailing list