Help for this page
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; ... | (?: ZERO_LENGTH )? }x;
$_ = '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