Использование регулярных выражений для соответствия любому символу, кроме = - PullRequest
21 голосов
/ 19 марта 2012

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

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

    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 =" с шаблоном.

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

Ответы [ 4 ]

41 голосов
/ 19 марта 2012

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

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

7 голосов
/ 19 марта 2012

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

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

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

String patternString = "[^=]*";
4 голосов
/ 19 марта 2012

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

if str.indexOf('=')  //...
1 голос
/ 19 марта 2012

Если вашей целью является отсутствие символов = в вашей строке, попробуйте следующее

String patternString = "[^=]*";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...