¿Regex para cadena contiene?

114

¿Cuál es la expresión regular para simplemente verificar si una cadena contiene una determinada palabra (por ejemplo, 'Prueba')? Hice algunas búsquedas en Google, pero no puedo obtener un ejemplo directo de una expresión regular. Esto es para un script de compilación, pero no tiene relación con ningún lenguaje de programación en particular.

GurdeepS
fuente

Respuestas:

78

Suponiendo sabores regulares de expresiones regulares de estilo PCRE:

Si desea verificarlo como una sola palabra completa , lo es \bTest\b, con los indicadores apropiados para no distinguir entre mayúsculas y minúsculas si lo desea y delimitadores para su lenguaje de programación. \brepresenta un "límite de palabra", es decir, un punto entre caracteres donde se puede considerar que una palabra comienza o termina. Por ejemplo, dado que los espacios se utilizan para separar palabras, habrá un límite de palabras a cada lado de un espacio.

Si desea verificarlo como parte de la palabra , es solo Test, nuevamente con los indicadores apropiados para la insensibilidad entre mayúsculas y minúsculas. Tenga en cuenta que, por lo general, los métodos dedicados de "subcadena" tienden a ser más rápidos en este caso, ya que eliminan la sobrecarga de analizar la expresión regular.

Michael Madsen
fuente
1
" \brepresenta un" límite de palabras ", es decir, algo que separa dos palabras (por ejemplo, un espacio)". \bno coincide con un espacio; es una aserción que coincide entre caracteres (o al principio o al final de una línea, en la mayoría de los casos).
extraño
1
@strager: Sí, tienes razón, mi explicación fue un poco imprecisa. Yo editaré.
Michael Madsen
117

Simplemente no ancle su patrón:

/Test/

La expresión regular anterior comprobará si la cadena literal "Prueba" se encuentra en algún lugar dentro de ella.

Azur platino
fuente
2
Gracias, ¡no sabía que era tan simple! Definitivamente no vi esto en mi búsqueda en Google. ¿Qué quieres decir con no anclar mi patrón?
GurdeepS
7
Puede anclar un patrón para que coincida con el principio o el final de una cadena, por ejemplo, / ^ Prueba / o / Prueba $ / respectivamente o incluso / ^ Prueba $ / para que coincida exactamente. El ejemplo es fatuo porque no proporciona ningún beneficio sobre la comparación de igualdad, pero, por ejemplo, al realizar la validación de un campo de formulario, una expresión regular como / ^ \ d + $ / solo coincidirá si el campo contiene al menos un dígito y nada más que dígitos numéricos.
David Clarke
-13

Llego unos años tarde, pero ¿por qué no esto?

[Tt][Ee][Ss][Tt]
usuario2747691
fuente
4
Esta respuesta apareció en la cola de revisión de baja calidad, presumiblemente porque no explicó el código. Si lo explica (en su respuesta), es mucho más probable que obtenga más votos a favor, ¡y la persona que pregunta realmente aprende algo!
El chico del sombrero
6
Esto no es muy generalizable, imagínese si la palabra que tuvo que buscar proviene de un usuario. Tendría que generar el [Aa]patrón para cada letra y se pondría bastante feo bastante rápido.
Platinum Azure