2011-02-15 30 views
65

¿Cuál es la expresión regular para comprobar simplemente si una cadena contiene una determinada palabra (por ejemplo, "Prueba")? He hecho algunas búsquedas en Google, pero no puedo obtener un ejemplo directo de dicha 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.Regex para cadena contiene?

Respuesta

56

Suponiendo estilo PCRE regular de sabores de expresiones regulares:

Si desea comprobar por ella como una sola, la palabra completa, es \bTest\b, con banderas apropiadas para el caso de falta de sensibilidad si se desea y delimitadores para su lenguaje de programación. \b representa un "límite de palabras", es decir, un punto entre los caracteres donde se puede considerar que una palabra comienza o termina. Por ejemplo, dado que los espacios se usan para separar palabras, habrá un límite de palabras a cada lado de un espacio.

Si desea comprobarlo como parte de la palabra, simplemente es Test, de nuevo con indicadores apropiados para la insensibilidad de 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.

+1

"' \ b' representa un "límite de palabras", es decir, algo que separa dos palabras (por ejemplo, un espacio) ". '\ b' no coincide con un espacio; es una aserción que coincide con * entre * caracteres (o al principio o al final de una línea, en la mayoría de los casos). – strager

+1

@strager: Sí, tienes razón, mi explicación fue un poco imprecisa. Voy a editar –

63

Eso sí, no anclar su patrón:

/Test/ 

la expresión regular anterior comprobará la cadena literal "de prueba" que se encuentra en algún lugar dentro de él.

+1

¡Gracias, no sabía que era así de simple! Definitivamente no vi esto en mi Google. ¿A qué te refieres con no anclar mi patrón? – dotnetdev

+5

Puede anclar un patrón para que coincida con el principio o el final de una cadena, p./^ Prueba/o/Prueba $/respectivamente o incluso/^ Prueba $/para coincidir exactamente. El ejemplo es fatuo porque no proporciona ningún beneficio sobre la comparación por igualdad pero, por ejemplo, al hacer la validación de 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. –

-5

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

[Tt][Ee][Ss][Tt] 
+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 positivos, ¡y el que pregunta realmente aprende algo! –

+3

Esto no es muy generalizable. Imagínese si la palabra que tuvo que buscar provino de un usuario. Tendría que generar el patrón '[Aa]' para cada letra y se pondría bastante feo bastante rápido. –

Cuestiones relacionadas