Eirik Berg Hanssen <[EMAIL PROTECTED]> writes:
> Rod Adams <[EMAIL PROTECTED]> writes:
>
>> Eirik Berg Hanssen wrote:
>>
>>>Rod Adams <[EMAIL PROTECTED]> writes:
>>>> $re1 = /^ <-[x]>* x <-[x]>* $/; # match a string with exactly one
>>>>'x' in it.
>>>> $re2 = /^ <-[y]>* y <-[y]>* $/; # ditto 'y'
>>>> $re3 = /^ <-[z]>* z <-[z]>* $/; # ditto 'z'
>>>> $re7 = none($re1, $re2, $re3); # matches if there are 0 or 2+ of
>>>>each of x,y,z.
>>>$re7 = /^ <!before <$re1> | <$re2> | <$re3> > /;
>> That doesn't quite do it, but something along those lines is
>> possible. You'd have to make sure the look ahead/behinds match to the
>> end of the string, not just some substring. And then you'd have to put
>> in something to actually match the string. So possible, but not
>> straightforward in the least.
>
> $re1, $re2, and $re3 are already anchored: Covered.
>
> And it will match the empty string at pos()==0, given that the
> assertion is satisfied. This of course differs from a junction of
> three match objects, each matching the whole string at pos()=0,
Whoops again: That would be a junction of three match objects,
_none_ of which are successful. When the assertion is not satisfied,
however, you will be able to inspect the match object junction's
states to see how many of the $re\d matched, and in the general case,
how they matched. But on the whole, I now get the impression that
these match object junctions (or at least match object injunctions)
would rarely be used outside boolean context.
Eirik
--
For every complex problem, there is a solution that is simple, neat, and wrong.
-- H. L. Mencken
A good plan today is better than a perfect plan tomorrow.
-- Patton