Saltar al contenido

¿Cómo encontrar la palabra exacta usando una expresión regular en Java?

Queremos regalarte la mejor solución que hallamos por todo internet. Deseamos que te resulte útil y si quieres aportar algo que nos pueda ayudar a mejorar hazlo con libertad.

Solución:

Cuando usas el matches() método, está tratando de hacer coincidir toda la entrada. En su ejemplo, la entrada “Imprime esto” no coincide con el patrón porque la palabra “Impresión” no está emparejado.

Por lo tanto, debe agregar algo a la expresión regular para que coincida con la parte inicial de la stringp.ej

.*\bthis\b

Y si también desea permitir texto adicional al final de la línea:

.*\bthis\b.*

Como alternativa, utilice un Matcher objeto y uso Matcher.find() para encontrar coincidencias dentro de la entrada string:

    Pattern p = Pattern.compile("\bthis\b");
    Matcher m = p.matcher("Print this");
    m.find();
    System.out.println(m.group());

Producción:

this

Si desea encontrar varias coincidencias en una línea, puede llamar find() y group() repetidamente para extraerlos todos.

Método de ejemplo completo para el comparador:

public static String REGEX_FIND_WORD="(?i).*?\b%s\b.*?";

public static boolean containsWord(String text, String word) 
    String regex=String.format(REGEX_FIND_WORD, Pattern.quote(word));
    return text.matches(regex);

Explique:

  1. (?i) – ignorar caso
  2. .*? – permitir (opcionalmente) cualquier carácter antes
  3. b – límite de palabras
  4. %s – variable a ser cambiada por String.format (citado para evitar errores de expresiones regulares)
  5. b – límite de palabras
  6. .*? – permitir (opcionalmente) cualquier carácter después

Para una buena explicación, consulte: http://www.regular-expressions.info/java.html

myString.matches(“regex”) devuelve true o false dependiendo si el
string puede coincidir completamente con la expresión regular. Es importante recordar que String.matches() solo devuelve true si todo string puede ser emparejado. En otras palabras: “regex” se aplica como si hubieras escrito “^regex$” con el inicio y el final de string anclas Esto es diferente de la mayoría de las otras bibliotecas de expresiones regulares, donde el método de “prueba de coincidencia rápida” devuelve true si la expresión regular se puede hacer coincidir en cualquier lugar en el
string. Si myString es abc, entonces myString.matches(“bc”) regresa false. bc coincide con abc, pero ^bc$ (que realmente se usa aquí) no.

Esto escribe “true”:

String input = "Print this";
System.out.println(input.matches(".*\bthis\b"));

Sección de Reseñas y Valoraciones

Ten en cuenta recomendar esta reseña si te valió la pena.

¡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 *