Salut,

Je débute en Regexp et je cherche à faire ceci.

J'ai les phrases suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
STEP0010 EXEC PGM=SORT,PARM='SIZE(MAX),DYNALLOC=(SYSDA,15)',COND=(0,NE)
STEPCTLG EXEC PGM=IEFBR14,COND=(4,LT)
Dans ces deux phrase, je cherche à extraire :
  • Le premier mot
  • La valeur après PGM
  • La valeur après PARM
  • La Valeur après COND


Or ici, on voir que PARM est facultatif (tout comme COND pour ceux qui connaissent le JCL Mainframe)

J'ai écrit ce motif (surement à optimiser) :
(^[A-Za-z0-9]{8}).*EXEC.*PGM=([A-Za-z0-9]*),.*PARM='([A-Za-z0-9(),=]*)',COND=([A-Za-z0-9(),=]*)
mais il ne fonctionne que pour le premier. Comment lui indiquer que la partie PARM (ou COND) est "facultative" ?

J'ai bien pensé à utiliser "|" mais cela ne fonctionne pas ... (ou je l'ai peut être pas utilisé comme il fallait)

Cordialement