Ragazzi ammetto di non essere molto pratico di espressioni regolari, però sto sbattendo la testa dietro una espressione che mi deve permettere il parsing di un costrutto "if/elseif/else".

Il costrutto è del tipo:
Codice PHP:
<if expr="...">
  
// qualcosa
<elseif expr="...">
  
// qualche altra cosa
<elseif expr="...">
  
// qualche altra cosa ancora
<else>
  
// questo
</if> 
l'espressione, molto rozza, che ho scritto al momento è:
Codice PHP:
preg_match_all("#<if expr=\"(.*)\">(.*)(<elseif expr=\"(.*)\">(.*))*(<else>(.*))?</if>#siU"$text$matchesPREG_SET_ORDER); 
che ovviamente non integra alcune cose ma al momento visto che non funziona come dovrebbe non mi interessano. Ecco il problema è che non mi becca tutti e due gli "elseif" ma solo il secondo.

Il costrutto if può avere più "elseif" ma un solo "else", ovviamente può anche non averli proprio.

Mi aiutate?