Использование регулярного выражения для соответствия любому символу кроме =
Я пытаюсь написать проверку строки для соответствия любому символу (регулярному, цифровому и специальному), кроме =.
Вот что я написал -
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 =" с шаблоном.
Как я могу исключить = (или любой другой символ, если на то пошло) из строки шаблона?
Ответы
Ответ 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 = "[^=]*";