Usar expresiones regulares para hacer coincidir cualquier carácter excepto =

2 minutos de lectura

Estoy tratando de escribir una validación de cadena para que coincida con cualquier carácter (regular, dígito y especial) excepto =.

Esto es lo que he escrito –

    String patternString = "[[^=][\\w\\s\\W]]*";
    Pattern p = Pattern.compile(patternString);
    Matcher m = p.matcher(str);

    if(m.matches())
        System.out.println("matches");
    else
        System.out.println("does not");

Pero coincide con la cadena de entrada “2009-09/09 12:23:12.5=” con el patrón.

¿Cómo puedo excluir = (o cualquier otro carácter, para el caso) de la cadena de patrón?

  • ¿Qué estás tratando de igualar? (O no)? sólo [^=]* coincidirá con cualquier cosa menos el carácter ‘=’.

    – Guillermo Polet

    19 de marzo de 2012 a las 13:17

  • No puede anidar clases de caracteres. [[] es simplemente una clase de carácter que consiste en un único carácter [.

    – tripleee

    Mar 19, 2012 at 13:25

tripleee's user avatar
tripleee

If the only prohibited character is the equals sign, something like [^=]* Deberia trabajar.

[^...] es una clase de carácter negada; coincide con un solo carácter que es cualquier carácter excepto uno de la lista entre corchetes. * repite la expresión cero o más veces.

  • como puedo hacer [^=]* juego \n¿también?

    –Cameron Hudson

    11 de junio de 2021 a las 17:36

  • No soy una persona de Java, pero mi primera coincidencia en un motor de búsqueda fue stackoverflow.com/a/30315738/874188

    – triplete

    11 de junio de 2021 a las 17:49

  • Hmm, gracias, pero mi caso de uso particular es buscar y reemplazar en VSCode.

    –Cameron Hudson

    13 de junio de 2021 a las 5:19

En primer lugar, no necesita una expresión regular. Simplemente llame contains:

if(str.contains("="))
    System.out.println("does not");
else
    System.out.println("matches");

La expresión regular correcta que está buscando es solo

String patternString = "[^=]*";

  • Esto puede ser muy útil para el cartel original. Pero esta respuesta está muy lejos del texto específico de la pregunta, lo que lleva a miles de personas a esta página. Esta alternativa tiene mucho menos valor para ellos.

    – ctpenrose

    11 de marzo de 2019 a las 16:55

Si su objetivo es no tener ningún carácter = en su cadena, intente lo siguiente

String patternString = "[^=]*";

avatar de usuario de moodywoody
malhumorado

Si solo desea verificar la ocurrencia de “=”, ¿por qué no usa el método String indexOf ()?

if str.indexOf('=')  //...

¿Ha sido útil esta solución?