Patrones
Clase de carácter
- x: (donde x no es uno de los caracteres mágicos ^$()%.[]*+-?) representa el propio carácter x.
- .: (un punto) representa todos los caracteres.
- %a: representa todas las letras.
- %c: representa todos los caracteres de control.
- %d: representa todos los dígitos.
- %l: representa todas las letras minúsculas.
- %p: representa todos los caracteres de puntuación.
- %s: representa todos los caracteres de espacio.
- %u: representa todas las letras mayúsculas.
- %w: representa todos los caracteres alfanuméricos.
- %x: representa todos los dígitos hexadecimales.
- %z: representa el carácter con representación 0.
- %x: (donde x es cualquier carácter no alfanumérico) representa el carácter
- x. Esta es la forma estándar de escapar de los caracteres mágicos. Cualquier carácter de puntuación (incluso los no mágicos) puede ir precedido de un '%' cuando se utiliza para representarse a sí mismo en un patrón.
[set]:representa la clase que es la unión de todos los caracteresinset. Se puede especificar un rango de caracteres separando los caracteres finales del rango con un '-'. Todas las clases ' %x descritas anteriormente también pueden utilizarse como componentes en set. Todos los demás personajes de la serie se representan a sí mismos. Por ejemplo, ' [%w_] (o [_%w]) representa todos los caracteres alfanuméricos más el guión bajo, [0-7] representalos dígitos octales, y ' [0-7%l%-] representa los dígitos octales más las letras minúsculas más el carácter '-'.
La interacción entre rangos y clases no está definida. Por lo tanto, patrones como " [%a-z] o " [a-%" "%] no tienen ningún significado.
[^set]:representa el complemento deset, dondeesese interpreta como arriba.
Para todas las clases representadas por letras simples (%a, ' %c, etc.), la letra mayúscula correspondiente representa el complemento de la clase. Por ejemplo, " %S " representa todos los caracteres sin espacios.
Las definiciones de letra, espacio y otros grupos de caracteres dependen de la configuración regional actual. En concreto, la clase " [a-z] " puede no ser equivalente a " %l.
Artículo del patrón
- Una clase de carácter único, que coincide con cualquier carácter único de la clase.
- Una clase de caracteres única seguida de"*", que coincide con 0 o más repeticiones de caracteres de la clase. Estos elementos de repetición siempre coincidirán con la secuencia más larga posible.
- Una clase de caracteres única seguida de"+", que coincide con 1 o más repeticiones de caracteres de la clase. Estos elementos de repetición siempre coincidirán con la secuencia más larga posible.
- Una clase de caracteres única seguida de"-", que también coincide con 0 o más repeticiones de caracteres de la clase. A diferencia de'*', estos elementos de repetición siempre coincidirán con la secuencia más corta posible.
- Una clase de un solo carácter seguida de '?', que coincide con 0 o 1 aparición de un carácter en la clase.
%n, para n entre 1 y 9; dicho elemento coincide con una subcadena igual a la n-ésima cadena capturada (véase más adelante).%bxy, donde x e y son dos caracteres distintos; dicho elemento coincide con cadenas que empiezan por x, terminan por y, y en las que x e y están equilibradas. Esto significa que, si se lee la cadena de izquierda a derecha, contando +1 para una x y -1 para una y, la y final es la primera y en la que la cuenta llega a 0. Por ejemplo, el elemento "%b()" coincide con expresiones con paréntesis equilibrados.
Patrón
Un patrón es una secuencia de elementos de un patrón. Un '^' al principio de un patrón ancla la coincidencia al principio de la cadena de asunto. Un '$' al final de un patrón ancla la coincidencia al final de la cadena de asunto. En otras posiciones, '^' y '$' no tienen ningún significado especial y se representan a sí mismos.
Captura
Un patrón puede contener subpatrones encerrados entre paréntesis; describen capturas. Cuando una coincidencia tiene éxito, las subcadenas de la cadena de asunto que captura la coincidencia se almacenan(capturan) para su uso futuro. Las capturas se numeran según su paréntesis izquierdo. Por ejemplo, en el patrón " "(a*(.)%w(%s*))", la parte de la cadena que coincide con
"a*(.)%w(%s*)" " se almacena como la primera captura de(y, por tanto, tiene el número 1); el carácter que coincide con "." se captura con el número 2, y la parte que coincide con "%s*" tiene el número 3.
Como caso especial, la captura vacía ' () ' captura la posición actual de la cadena (un número). Por ejemplo, si aplicamos el patrón ' "()aa()" a la cadena ' "flaaap", habrá dos capturas: 3 y 5.
Un patrón no puede contener ceros incrustados. Utiliza ' %z ' en su lugar.