regex - probar - expresiones regulares java
Expresión regular para unir una palabra completa (5)
Utilice este ejemplo en línea en vivo para probar su patrón:
Sobre la captura de pantalla tomada de este ejemplo en vivo: https://regex101.com/r/cU5lC2/1
Coincidencia de cualquier palabra completa en la línea de comando.
Utilizaré 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, ponga algo de contenido en una variable, haga coincidir palabra.
el@apollo:~/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 patrón (/w)+
.
$ content1 y $ content2 contienen al menos una palabra, $ content3 no.
Coincide con palabras específicas en la línea de comandos sin bountarios de palabras
el@apollo:~/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
Las variables gun1
y gun2
contienen el dart
o fart
cuerda que es correcto, pero gun3 contiene darty
y still matches, ese es el problema. Entonces en el siguiente ejemplo.
Combina palabras específicas en la línea de comandos con límites de palabras:
Los límites de palabras se pueden forzar con /b
, ver:
Regex Visual Image adquirida de http://jex.im/regulex y https://github.com/JexCheng/regulex Ejemplo:
el@apollo:~/foo$ phpsh
php> $gun1 = ''dart gun'';
php> $gun2 = ''fart gun'';
php> $gun3 = ''darty gun'';
php> $gun4 = ''unicorn gun'';
php> echo preg_match(''(/bdart/b|/bfart/b)'', $gun1);
1
php> echo preg_match(''(/bdart/b|/bfart/b)'', $gun2);
1
php> echo preg_match(''(/bdart/b|/bfart/b)'', $gun3);
0
php> echo preg_match(''(/bdart/b|/bfart/b)'', $gun4);
0
The /b
afirma que tenemos un límite de palabras, asegurándonos de que "dart" coincida, pero "darty" no lo es.
Esta pregunta ya tiene una respuesta aquí:
- Regex combina palabras enteras solo 4 respuestas
Quiero hacer coincidir una expresión regular en una palabra completa.
En el siguiente ejemplo, intento hacer coincidir s
o season
pero lo que tengo coincide con s
, e
, a
, o
y n
.
[s|season]
¿Cómo hago una expresión regular para que coincida con una palabra completa?
Los corchetes están destinados a la clase de caracteres, y en realidad intentas hacer coincidir cualquiera de: s
, |
, s
(otra vez), e
, a
, s
(otra vez), o
y n
.
Use paréntesis en su lugar para agrupar:
(s|season)
o grupo no capturante:
(?:s|season)
Nota: Los grupos que no son de captura le dicen al motor que no necesita almacenar la coincidencia, mientras que el otro (el grupo de captura lo hace). Para cosas pequeñas, ya sea que funcione, para cosas ''de servicio pesado'', es posible que desee ver primero si necesita el partido o no. Si no lo hace, mejor utilice el grupo sin captura para asignar más memoria para el cálculo en lugar de almacenar algo que nunca necesitará usar.
Para uso insensible a mayúsculas y minúsculas
([sS][eE][aA][sS][oO][nN])
Para búsqueda en minúsculas
([s][e][a][s][o][n])
Para mayúsculas y minúsculas
([S][E][A][S][O][N])
Pruebo ejemplos en js. La solución más simple: solo agrega la palabra que necesitas dentro de / /:
var reg = /cat/;
reg.test(''some cat here'');//1 test
true // result
reg.test(''acatb'');//2 test
true // result
Ahora si necesitas esta palabra específica con límites, no dentro de ninguna otra señal-letra. Usamos marcador b :
var reg = //bcat/b/
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 fg para obtener información sobre el lugar / índice de nuestra palabra.
var matchResult = //bcat/b/.exec("good cat good");
console.log(matchResult.index); // 5
Si necesitamos obtener todas las palabras coincidentes en cadena / oración / texto, podemos usar g modificador (concordancia global):
"cat good cat good cat".match(//bcat/b/g).length
// 3
Ahora el último, no necesito una palabra específica, sino algunas. Usamos | signo, significa elección / o.
"bad dog bad".match(//bcat|dog/b/g).length
// 1
[ ]
define una clase de personaje. Así que cada personaje que establezcas allí, coincidirá. [012]
coincidirá con 0
o 1
o 2
y [0-2]
comporta igual.
Lo que quiere es agrupaciones para definir una declaración o. Usa (s|season)
para tu problema.
Por cierto. tienes que tener cuidado Los metacaracteres en expresiones regulares (o dentro de una agrupación) son diferentes de la clase de caracteres. Una clase de personaje es como un sub-lenguaje. [$A]
solo coincidirá con $
o A
, nada más. No escapando aquí por el dólar.