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/...)
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