Wenn man die fehlende schließende Klammer ergänzt, matcht es trotzdem auch wenn beide Teilausdrücke fehlschlagen:
~$ perl
$rx = qr/( (?: \w+ (?:\s+\w+ )? )?+ ; (?: \w+ (?: \s+\w+ )? )?+ )/x;
print "gaga\n" if ';' =~ $rx;
gaga
Das
+ hinter dem Fragezeichen bedeutet doch nur, dass nicht versucht wird, den optionalen Ausdruck, wenn er denn passte, wieder freizugeben, damit der gesamte Ausdruck matcht, oder?
Also ein
/\w?b/ würde auf
'b' matchen, ein
/\w?+b/ jedoch nicht.
MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'