Saltar al contenido

Expresión regular para coincidir con una palabra o su prefijo

Solución:

Los corchetes están pensados ​​para la clase de carácter y, en realidad, estás intentando hacer coincidir cualquiera de los siguientes: s, |, s (de nuevo), e, a, s (de nuevo), o y n.

En su lugar, utilice paréntesis para agrupar:

(s|season)

o grupo no capturador:

(?:s|season)

Nota: Los grupos de no captura le dicen al motor que no necesita almacenar la coincidencia, mientras que el otro (el grupo de captura sí). Para cosas pequeñas, ya sea que funcione, para cosas ‘pesadas’, es posible que desee ver primero si necesita la combinación o no. Si no lo hace, mejor use el grupo de no captura para asignar más memoria para el cálculo en lugar de almacenar algo que nunca necesitará usar.

Utilice este ejemplo en vivo en línea para probar su patrón:

ingrese la descripción de la imagen aquí

Captura de pantalla anterior tomada de este ejemplo en vivo: https://regex101.com/r/cU5lC2/1

Coincidir con cualquier palabra completa en la línea de comandos.

Usaré el shell interactivo phpsh en Ubuntu 12.10 para demostrar el motor de expresiones regulares PCRE a través del método conocido como preg_match

Inicie phpsh, coloque algo de contenido en una variable, coincida con la palabra.

[email protected]:~/foo$ phpsh

php> $content1 = 'badger'
php> $content2 = '1234'
php> $content3 = '$%^&'

php> echo preg_match('(w+)', $content1);
1

php> echo preg_match('(w+)', $content2);
1

php> echo preg_match('(w+)', $content3);
0

El método preg_match utilizó el motor PCRE dentro del lenguaje PHP para analizar variables: $content1, $content2 y $content3 con el (w)+ patrón.

$ content1 y $ content2 contienen al menos una palabra, $ content3 no.

Coincidir con palabras específicas en la línea de comandos sin límites de palabras

[email protected]:~/foo$ phpsh

php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'darty gun';
php> $gun4 = 'unicorn gun';

php> echo preg_match('(dart|fart)', $gun1);
1

php> echo preg_match('(dart|fart)', $gun2);
1

php> echo preg_match('(dart|fart)', $gun3);
1

php> echo preg_match('(dart|fart)', $gun4);
0

Variables gun1 y gun2 contener la cadena dart o fart que es correcto, pero gun3 contiene darty y aún coincide, ese es el problema. Pasemos al siguiente ejemplo.

Haga coincidir palabras específicas en la línea de comandos con límites de palabras:

Los límites de palabras se pueden combinar a la fuerza con b, ver:
Análisis visual de lo que hace el límite de palabras de jex.im/regulex

Imagen visual Regex adquirida de http://jex.im/regulex y https://github.com/JexCheng/regulex Ejemplo:

[email protected]:~/foo$ phpsh

php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'darty gun';
php> $gun4 = 'unicorn gun';

php> echo preg_match('(bdartb|bfartb)', $gun1);
1

php> echo preg_match('(bdartb|bfartb)', $gun2);
1

php> echo preg_match('(bdartb|bfartb)', $gun3);
0

php> echo preg_match('(bdartb|bfartb)', $gun4);
0

los b afirma que tenemos un límite de palabras, asegurándose de que “dardo” coincida, pero “dardo” no.

Pruebo ejemplos en js. La solución más simple: solo agregue la palabra que necesita dentro / /:

var reg = /cat/;
reg.test('some cat here');//1 test
true // result
reg.test('acatb');//2 test
true // result

Ahora, si necesita esta palabra específica con límites, no dentro de ningún otro signo-letra. Usamos B marcador:

var reg = /bcatb/
reg.test('acatb');//1 test 
false // result
reg.test('have cat here');//2 test
true // result

También tenemos el método exec () en js, que devuelve object-result. Ayuda a fg a obtener información sobre el lugar / índice de nuestra palabra.

var matchResult = /bcatb/.exec("good cat good");
console.log(matchResult.index); // 5

Si necesitamos obtener todas las palabras coincidentes en una cadena / oración / texto, podemos usar el modificador g (coincidencia global):

"cat good cat good cat".match(/bcatb/g).length
// 3 

Ahora el último: no necesito una palabra específica, sino algunas de ellas. Usamos | signo, significa elección / o.

"bad dog bad".match(/bcat|dogb/g).length
// 1
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *