Regular Expressions Definiciones de subpattern


Ejemplo

La construcción (?(DEFINE) ... ) permite definir subpatrones a los que puede hacer referencia más adelante mediante recursión. Cuando se encuentre en el patrón, no se comparará con.

Este grupo debe contener definiciones de subpatrones con nombre, a las que solo se podrá acceder mediante recursión. Puedes definir las gramáticas de esta manera:

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

Este patrón validará texto como el siguiente:

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

Observe cómo una lista puede contener uno o más valores, y un valor puede ser una lista.