2011-01-18 27 views
7

Si quiero comprobar todas las palabras que contienen la subcadena DEF, esto sería el enfoque correcto:Comprobar si la palabra contiene subcadena en Java expresiones regulares

^.*[D][E][F].*$ 

¿También hay una regla fácil cuando la negación de expresiones regulares, es decir, la modificación lo anterior para identificar cadenas que no contienen DEF

EDITAR: Sé que esto no requiere expresiones regulares, pero para mi propósito lo hace.

Respuesta

18

Esto también funciona:

^.*DEF.*$ 

Se comprueba, si toda la cadena contiene la subcadena "DEF" al menos una vez. Pero para expresiones triviales como esta:

str.contains("DEF"); 

hace lo mismo.

+0

¿cuál es el^y $ para –

+0

@LouisRhys, '^'y' $ 'representan el principio y el final de la cadena, respectivamente. Si está utilizando 'String.matches (String)' de java, no necesita usarlos, ya que este método devuelve verdadero solo si la expresión regular coincide con la cadena de entrada * completa *. – Czechnology

9

¿Por qué no usar str.contains("DEF") y !str.contains("DEF")?

+2

+1: no hay necesidad de un regex :) – LaGrandMere

+0

Me gustaría saber sin embargo para entender cómo funcionan. – dr85

+0

El método built in contains() simplemente busca a lo largo de los bytes en la cadena una ocurrencia de los caracteres D, E y F en ese orden, podría considerarlo una búsqueda de fuerza bruta. P.ej. una cadena de 100 caracteres sería "revisada" hasta ~ 97 veces para esa secuencia. Las expresiones regulares son un animal muy, muy diferente. – Brian

0

Puede simplemente usar DEF como su expresión regular. Para identificar las cadenas que no lo contienen, simplemente devuelva las cadenas que no coinciden con la expresión anterior.

+0

cómo identificaría usando expresiones regulares todas las palabras que no contengan una subcadena particular – dr85

+0

Like I dicho, simplemente negaría el resultado, por lo que sería '! string.matches (" DEF ");' – biziclop

+0

pero me refiero a fuera de Java usando simplemente una expresión regex – dr85

Cuestiones relacionadas