Usar expresiones regulares

Las expresiones regulares son caracteres que se combinan de acuerdo con un patrón específico (sintaxis) y que se pueden utilizar para realizar búsquedas avanzadas Buscar y/o reemplazar. La implementación de expresiones regulares utiliza una sintaxis de patrones de expresiones regulares ECMAScript.

Consejo

Observar la barra de estado para ver si hay expresiones regulares no válidas o si la cadena de búsqueda no produce ninguna coincidencia. Usar el Expression builder para crear patrones válidos.

Activar el icono Usar expresiones regulares en el cuadro de diálogo Buscar

Caracteres especiales del patrón

Los caracteres especiales del patrón son caracteres (o secuencias de caracteres) que tienen un significado especial cuando aparecen en una expresión regular, ya sea para representar un carácter difícil de expresar en una cadena o para representar una categoría de caracteres. Cada uno de estos caracteres de patrón especiales se corresponde en la secuencia de destino con un único carácter (a menos que un cuantificador especifique lo contrario).

Sintaxis

Descripción

Ejemplo

\w

Cualquier carácter alfanumérico o subrayado

test\wnew busca test2new o test_new

\W

Cualquier carácter que no sea alfanumérico o subrayado

test\Wnew busca test.new o test-new

\d

Cualquier carácter numérico

test\d\d busca test21

\D

Cualquier carácter que no sea un carácter numérico

test\D\D busca test_a

\s

Cualquier carácter de espacio, tabulación o fin de línea (CR)(LF)

test\s1 busca test 1

\S

Cualquier carácter que no sea un espacio, un tabulador o un carácter de fin de línea (CR)(LF)

test\S1 busca test_1

\t

Tabulador

a\tb busca a     b

\r\n

Caracteres de fin de línea

En el editor ST, las líneas terminan en "\r\n" (un retorno de carro seguido de una nueva línea). Estos caracteres no son visibles, pero están presentes en el editor ST y se puede realizar una búsqueda sobre ellos.

Véase la opción: Extras > Opciones > Opciones de Programa > Editores > Editor ST -> Mostrar fin de la línea

test\r\n busca test(CR)(LF)

.

Cualquier carácter individual, incluidos caracteres de espacio, caracteres de tabulación y caracteres de línea (CR)(LF)

te.t1 busca text1 o test1

\

Los siguientes caracteres especiales que se utilizan en las expresiones regulares deben escaparse con la \ (barra invertida) si se desea buscarlos como texto: ^ $ \ . * + ? ( ) [ ] { } |

No es posible escapar los caracteres que forman una de las secuencias de caracteres especiales indicadas anteriormente.

test\( encuentra test(

[class]

El carácter objetivo forma parte de la clase de caracteres (ver clases de caracteres más adelante)

[abc] busca a, b o c

[^class]

El carácter objetivo no forma parte de la clase de caracteres (ver clases de caracteres más adelante)

[^xyz] busca cualquier carácter excepto x, y o z

Temas relacionados

Cuantificadores

Los cuantificadores siguen un carácter o un carácter especial de patrón. Pueden modificar el número de veces que un carácter se repite en la coincidencia:

Cuantificador

Número de coincidencias

Ejemplo

+

1 o más

pla+ce busca place o plaace

*

0 o más

pla*ce busca plce o place o plaace

?

(0 - 1)

pla?ce busca plce o place

{int}

Exactamente el número definido por int

tyco{3}n busca tycooon

{int,}

El número definido por int o más

tyco{2,}n busca tycoooon

{min,max}

El número entre min (mínimo) y max (máximo)

tyco{1,2}n busca tycon o tycoon

Por defecto, todos estos cuantificadores son codiciosos (es decir, toman el mayor número posible de caracteres que cumplan la condición). Este comportamiento puede cambiarse a no codicioso (es decir, tomar el menor número posible de caracteres que cumplan la condición) añadiendo un signo de interrogación (?) después del cuantificador.

Cuantificador

Número de coincidencias

Ejemplo

+?

1 o más caracteres, búsqueda no codiciosa

Patrón de búsqueda: '.+?'

Texto de ejemplo: sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Resultado de la búsqueda: 'abc' y 'ABC'

Se encuentra el menor número posible de caracteres entre la primera comilla simple y la siguiente comilla simple.

+

1 o más caracteres, búsqueda codiciosa

Patrón de búsqueda: '.+'

Texto de ejemplo: sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Resultado de la búsqueda: 'abc'; sVar2 := 'ABC'; sVar3 := ''

Se encuentra el mayor número posible de caracteres entre la primera comilla simple y la siguiente comilla simple.

*?

0 o más caracteres, búsqueda no codiciosa

Patrón de búsqueda: '.*?'

Texto de ejemplo: sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Resultado de la búsqueda: 'abc' y 'ABC' y ''

*

0 o más caracteres, búsqueda codiciosa

Patrón de búsqueda: '.*'

Texto de ejemplo: sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Resultado de la búsqueda: 'abc'; sVar2 := 'ABC'; sVar3 := ''

Grupos

Los grupos permiten aplicar cuantificadores a una secuencia de caracteres (en lugar de a un solo carácter).

Grupo de caracteres

Descripción

Ejemplo

(subexpresión)

Captura los caracteres que representan la subexpresión en la secuencia de destino y los guarda como una subcoincidencia. Cada subcoincidencia está numerada según el orden de aparición de su paréntesis de apertura (la primera subcoincidencia es la referencia inversa número 1, la segunda es la referencia inversa número 2, y así sucesivamente...). Este número de referencia inversa se puede reutilizar en la búsqueda o en el campo sustitución.

i(\d)Var\1 busca i1Var1, i2Var2 o i6Var6 pero no i1Var2

(\d) es la subexpresión del primer dígito encontrado que crea la primera referencia inversa (N=1). Esta referencia inversa se utiliza con \1 para identificar el mismo contenido que se encuentra en la referencia inversa.

(?:subexpresión)

Define un grupo que no captura.

i(?:\d)Var(\d)Value\1 busca i1Var2Value2 o i1Var3Value3

En este caso, con \1 se hace referencia a la primera referencia inversa (\d).

\number

Define una referencia inversa que permite identificar posteriormente en la misma expresión regular una subexpresión previamente encontrada.

Ejemplo 1:

Patrón de búsqueda: [a-c](\d)(?:in|out)put_\1 busca a1input_1 o b2output_2

Explicación del patrón de búsqueda:

[a-c] busca a, b o c

(\d) seguido de un dígito, y este dígito se utiliza como referencia inversa

(?:in|out) seguido de in u out, esta expresión no se usa como referencia inversa.

put_ seguido de put_

\1 seguido de la primera referencia inversa

También se pueden utilizar referencias inversas en la cadena de sustitución.

Ejemplo 2:

Patrón de búsqueda: iCount(\d) busca iCount seguido de un dígito, y este dígito se utiliza como referencia inversa.

Patrón de sustitución: iValue\1 sustituye la cadena de búsqueda iCount por iValue seguido de la primera referencia inversa.

El resultado con referencia inversa es, p. ej., 3: iCount3 es sustituido por iValue3

Aserciones

Las aserciones especifican una posición en la cadena donde debe producirse una coincidencia. Cuando se utiliza una aserción en la expresión de búsqueda, el motor de expresiones regulares no avanza por la secuencia destino ni consume caracteres; solo busca una coincidencia en la posición especificada.

Grupo de caracteres

Descripción

Ejemplo

\b

Límite de palabra

\bis busca island y is pero no This

is\b busca This y is pero no island

\bis\b busca is pero no island

\B

No un límite de palabra

\Bis busca This pero no island

is\B busca island pero no This

\Bis\B busca Wish pero no is o island

^

Inicio de la línea

^iVar busca iVar solo cuando la cadena de búsqueda comienza con una nueva línea. Usar ^\s*iVar para buscar     iVar con espacios en blanco al principio de la línea.

Consejo

Al pulsar la tecla de inserción <^> seguida de una vocal, por ejemplo, a, e, i, o, la inserción se interpretará como un acento circunflejo, es decir, â, ê, î, ô, û. Pulsar <^> seguido de un espacio para evitarlo.

$

Final de la línea

iVar$ busca iVar solo cuando la cadena de búsqueda termina en una línea.

(?=subexpresión)

Lookahead positivo

Los caracteres que siguen a la aserción deben coincidir con la subexpresión, pero no se consumen caracteres.

Var(?=\d) busca todas las Var seguidas de un dígito

(?!subexpresión)

Lookahead negativo

Los caracteres que siguen a la aserción no deben coincidir con la subexpresión. No se consumen caracteres.

Var(?!\d) busca todas las Var no seguidas de un dígito

Alternativas

Un patrón puede incluir diferentes alternativas:A

Carácter

Descripción

Ejemplo

|

Separador que delimita dos patrones o subexpresiones alternativos.

(i|o)Var busca iVar o oVar

Para utilizar varios patrones alternativos en una expresión regular, separarlos con el operador de separación (|): La expresión regular coincidirá si cualquiera de las alternativas coincide y también en cuanto lo haga una.

Las subexpresiones (en grupos o aserciones) también pueden utilizar el operador de separación para separar diferentes alternativas.

Clases de caracteres

Una clase de caracteres define un conjunto de caracteres que va entre corchetes [ ].

El objeto de expresión regular intenta hacer coincidir toda la clase de caracteres con un único carácter de la secuencia destino (a menos que un cuantificador especifique otra cosa).

La clase de caracteres puede contener cualquier combinación de:

Tipo

Descripción

Ejemplo

Caracteres individuales

Cualquier carácter especificado se considera parte de la clase (excepto los caracteres especiales - (guión), [ (corchete izquierdo) y ] (corchete derecho).

Todos los caracteres de patrón especiales, como \t, \d, etc., también pueden usarse dentro de una especificación de clase de caracteres.

[abc] busca a, b o c

[^xyz] busca cualquier carácter excepto x, y o z

Rango

Colocar el - (guión) entre dos caracteres válidos para especificar un rango.

[a-z] busca cualquier carácter en minúscula en el rango de a a z.

[^D-F] busca cualquier carácter excepto la letra mayúscula D, E o F.

[1-36-9] busca un dígito entre 1 y 3 o entre 6 y 9

[abc1-5] busca a, b o c o un dígito entre 1 y 5.

Caracteres escapados

Los caracteres -]\^ tienen un significado especial en las definiciones de clase de caracteres. Para tratar estos caracteres como caracteres normales, añadir una barra invertida antes de los caracteres para suprimir su significado especial.

[a\-z]Var busca aVar, -Var o zVar

[ab\t\]] busca a, b, tab o ]

Modificado el: 2022-11-15Comentarios sobre esta páginaLínea directa de Panasonic