Подтвердить что ты не робот

Использование регулярного выражения для соответствия любому символу кроме =

Я пытаюсь написать проверку строки для соответствия любому символу (регулярному, цифровому и специальному), кроме =.

Вот что я написал -

    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");

Но это соответствует строке ввода "2009-09/09 12: 23: 12.5 =" с шаблоном.

Как я могу исключить = (или любой другой символ, если на то пошло) из строки шаблона?

4b9b3361

Ответ 1

Если единственным запрещенным символом является знак равенства, то что-то вроде [^=]* должно работать.

[^...] является отрицательным символьным классом; он соответствует одному символу, который является любым символом, кроме одного из списка между квадратными скобками. * повторяет выражение нуль или более раз.

Ответ 2

Прежде всего, вам не нужно регулярное выражение. Просто позвоните contains:

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

Правильное регулярное выражение, которое вы ищете, просто

String patternString = "[^=]*";

Ответ 3

Если вы хотите проверить наличие "=", почему вы не используете метод String indexOf()?

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

Ответ 4

Если ваша цель состоит в том, чтобы не иметь никаких символов в вашей строке, попробуйте следующее

String patternString = "[^=]*";