But in fact:The lower-level loops are interrupted (that is, the loop is broken) wh +en Perl detects that a repeated expression matched a zero-length subs +tring. Thus: m{ (?: NON_ZERO_LENGTH | ZERO_LENGTH )* }x; is made equivalent to m{ (?: NON_ZERO_LENGTH )* | (?: ZERO_LENGTH )? }x;
My question - is this behaviour expected? Thank you for the help!$_ = 'aaabbb'; /((?: a | c? )*)/x; # 'c' matches once with zero-length # which is not the same as /(( a )* | ( c? )?)/x; # where 'c' does not match at all
In reply to ZERO_LENGTH match by sh1tn
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |