pattern
El elemento pattern
se utiliza para definir un patrón de expresión regular para un tipo de datos.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="matricula">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{4}[A-Z]{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
El atributo value
recoge la expresión regular que permite validar el contenido del elemento o atributo.
En el ejemplo, se indica que la cadena de texto debe contener 4 dígitos seguidos de 3 letras mayúsculas. Por simplificar, estamos suponiendo que una matrícula puede tener cualquier letra mayúscula.
La letra Ñ y las letras con tildes no se incluyen dentro del rango [A-Z]
(letras mayúsculas de la A a la Z). Esto es debido a que el rango tomado es el del abecedario inglés. Si se quieren tener en cuenta esos caracteres, debemos indicarlos a mayores.
El rango [A-Z]
incluye 26 caracteres:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
El rango [a-z]
incluye los mismos caracteres, pero en minúsculas:
abcdefghijklmnopqrstuvwxyz
Valores válidos serían los siguientes:
<matricula>2907KGP</matricula>
<matricula>0000ABC</matricula>
<matricula>1658DBZ</matricula>
<matricula>0585TGU</matricula>
Valores no válidos serían los siguientes:
<matricula>123HÑC</matricula>
<matricula>123ÉAB</matricula>
<matricula>123HTOC</matricula>
<matricula>CJS3791</matricula>
<matricula>HLIV RTG</matricula>
<matricula>20112 GNO</matricula>
Expresiones regulares
Una expresión regular es una secuencia de caracteres que se utiliza para definir un patrón. También se conocen como regex (regular expression).
Las expresiones regulares se basan en un conjunto de reglas y símbolos especiales que permiten definir patrones de manera precisa.
En la siguiente tabla se muestran algunas de las expresiones más habituales para construir patrones. En la última columna (Ejemplo), se muestran subrayadas las concidencias que se obtienen de los patrones de ejemplo. Las palabras que aparecen sin subrayar es que no obtuvieron ninguna coincidencia.
Expresión | Definición | Patrón de ejemplo | Ejemplo |
---|---|---|---|
texto | Busca la secuencia de carácteres indicada. | am | Programación Amar Camión |
^ | Busca el elemento al inicio de una línea. | ^Z | Zapato Zafiro Corral |
$ | Busca el elemento al final de una línea. | a$ | María Silla Oso |
* | Busca el elemento anterior a * desde ninguna hasta varias veces. | An* | Aval Ana Anna On Air Online |
+ | Busca el elemento anterior a + desde 1 a varias veces. | An+ | Aval Ana Anna On Air |
? | Busca el elemento anterior a ? ninguna o una vez. | An? | Aval Ana Anna On Air Online |
. | Busca cualquier carácter, exepeto el de nueva línea. Es un comodín que substituye a un carácter. | A.a | Ana Asa Anna amar Amar |
\ | El carácter que va después de \ es convertido en carácter especial o, si ya lo es, deja de serlo. | web\.es | web.es paginaweb.es |
[patrón] | Busca cualquier carácter del conjunto indicado entre [ y ] . | [cps]ala | pala sala cala ala |
[^patrón] | Busca cualquier carácter que no esté en el conjunto indicado entre [ y ] | [^AEIOU] | Palanca Hoy Amarillo |
[a-z] | El guión simboliza un rango. | [a-m] | Palanca Hoy Amarillo |
{num} | Busca el elemento indicado antes de {num} tantas veces como indique num . | a{3} | aaa baaa aaaaaaaabaaa eee |
{min,max} | Busca el elemento indicado antes de {min,max} tantas veces como indique el rango min y max , ambos incluidos. | a{2,3} | aaa baaa aaaaabaaa a eee |
\b | Busca la palabra exacta, siempre situado en el límite de la palbra, normalmente un espacio. | \bCambia\b | Cambia de página. Cambio de ordenador. |
\d | Busca un dígito del 0 al 9. Tiene el mismo efecto que [0-9] | \d | 8 9 567 a10 |
\D | Busca una coincidencia que no sea un dígito. Tiene el mismo efecto que [^0-9] | \D | 4 páginas a10 |
\s | Busca un carácter de espacio (espacio en blanco, tabulador, nueva página, salto de línea, etc.) | \s | 4 páginas a10 |
\w | Busca cualquier carácter de palabra. Tiene el mismo efecto que [a-zA-Z_0-9] . | \w | ¿Estás ahí? Expresión regular |
\W | Busca cualquier carácter que no sea una palabra. Tiene el mismo efecto que [^\w] | \W | ¿Estás ahí? Expresión regular |
patrón1|patrón2 | Busca el patrón 1 o el patrón 2. Tiene el mismo efecto que [patrón1patrón2] . | a|z | Zoo Capaz |
patrón1(?=patrón2) | Busca el patrón 1 solo si le sigue el patrón 2. El patrón 2 no formará parte de la ocurrencia encontrada. | Hojas (?=pares) | Hojas pares Hojas impares Números pares |
Para practicar las expresiones regulares, se pueden utilizar las siguientes herramientas online:
En ellas, se pueden probar qué ocurrencias se detectan en una cadena de texto a partir de una expresión regular. Además, se ofrece una explicación detallada de la expresión regular introducida.
Las expresiones regulares son válidas para cualquier lenguaje de programación (siempre que soporte esta característica). Se pueden utilizar, incluso, en editores de texto para buscar patrones en el código fuente.