Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost Regex - Alternation documentation example
From: John Maddock (jz.maddock_at_[hidden])
Date: 2017-07-15 14:44:23


On 15/07/2017 14:12, Nick via Boost-users wrote:
> According to the Boost Regex documentation for Alternation
> (http://www.boost.org/doc/libs/1_64_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax.perl_syntax.alternation)
>
> Quoting a piece of the documentation:
>
> -----
>
> |abc is not a valid expression, but
>
> (?:)|abc is and is equivalent, also the expression:
>
> (?:abc)?? has exactly the same effect.
>
> -----
>
>
> Is the last expression:
>
> (?:abc)??
>
> correct?

Yes.

> Why does it need two '?' operators instead of only one?

Non-greedy, matches nothing for preference, otherwise abc, same as
"(?:)|abc" does.
>
> If I try this expression with the input "abc" the Boost engine does not
> match "abc" as I'd have expected. However the expression:
>
> (?:abc)?
>
> matches as expected.

That has the opposite semantics: abc as first choice, nothing as
second. ie the same as "abc|(?:)".

HTH, John.

---
This email has been checked for viruses by AVG.
http://www.avg.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net