Regular Expressions Definizioni Subpattern


Esempio

Il costrutto (?(DEFINE) ... ) ti permette di definire sotto-schemi che puoi consultare in seguito attraverso la ricorsione. Quando viene incontrato nel modello, non verrà confrontato.

Questo gruppo dovrebbe contenere definizioni di subpattern denominate, che saranno accessibili solo attraverso la ricorsione. Puoi definire le grammatiche in questo modo:

(?x) # ignore pattern whitespace
(?(DEFINE)
  (?<string> ".*?" )
  (?<number> \d+ )
  (?<value>
    \s* (?:
        (?&string)
      | (?&number)
      | (?&list)
    ) \s*
  )
  (?<list> \[ (?&value) (?: , (?&value) )* \] )
)
^(?&value)$

Questo modello convaliderà il testo come il seguente:

[42, "abc", ["foo", "bar"], 10]

Nota come un elenco può contenere uno o più valori e un valore può essere esso stesso un elenco.