Johnny B.: Frage zu Regex - Datum

Beitrag lesen

Hallo geehrtes Forum,

$datum liegt in folgenden möglichen Formaten vor:

12.03.2010
   03.2010
      2010

Folgende Regexe liefern mir die einzelnen Elemente:

my ( $tag )     = ( $datum =~ /(\d\d)\.\d\d\.\d\d\d\d/ );  
my ( $monat )   = ( $datum =~ /(?:\d\d\.)*?(\d\d)\.\d\d\d\d/ );  
my ( $jahr )    = ( $datum =~ /(?:\d\d\.)*?(?:\d\d\.)*?(\d\d\d\d)/ );  
  
Nun habe ich versucht, die drei zusammenzufassen. Das klappt aber nicht:  
my ( $tag, $monat, $jahr )    = ( $datum =~ /(?:(\d\d\).)*?(?:(\d\d\).)*?(\d\d\d\d)/ );   

Einen Stringteil kann ich mit (?:xyz) gruppieren und mittels angehängtem *? im Falle des Nichtvorhandenseins ignorieren. Ist es möglich, innerhalb eines regulären Ausdrucks auch Variablen nur optional zu matchen?

Besten Gruß
JOhnnY