Boost logo

Boost :

From: impulse9 (impulse9_at_[hidden])
Date: 2007-06-01 18:12:52

John Maddock wrote:

JM> Eric Niebler wrote:
>>> Empty alternatives are not allowed (these are almost always a
>>> mistake), but if you really want an empty alternative use (?:) as a
>>> placeholder, for example:
>>> "|abc" is not a valid expression, but
>>> "(?:)|abc" is and is equivalent, also the expression:
>>> "(?:abc)??" has exactly the same effect.
>> This would seem to be non-compliant behavior according to TR1, which
>> references ECMA-262, which describes the regex syntax in section
>> 15.10.1 as:

JM> Quite possibly, although I note that Perl 6 (last time I checked anyway) was
JM> planning to disallow these, on the grounds that they are a persistent source
JM> of buggy regular expressions. And as noted there are alternatives:

JM> |abc == (?:abc)?? == (?:)|abc
JM> abc| == (?:abc)? == abc|(?:)

JM> John.

Disallowing these would do more bad than good. Buggy regular expressions
are quite easy to write, even without '|)'

Using |) is quite intuitive. We have a lot of cases than some
symbol(s) may or may not be present, and this is a natural way to say that.
Moreover it makes regular expressions more flexible.

This is from

Regular expressions are particularly useful in the production of code
completion systems and syntax highlighting in integrated development environments (IDEs).

For example:

as used to match type declarations in source code (see also, Regular expression examples ).

Alternatives are just alternatives. Or should we assume that
boost::regex is only Perl6+ compatible?

That's imho.

Thank you.


Boost list run by bdawes at, gregod at, cpdaniel at, john at