Добрый вечер ребята,
У меня вопрос к регулярному выражению в Java.
У меня есть строка s, и она должна начинаться с символа в нижнем регистре или в верхнем регистре и следовать независимо от количества символов или цифр. Он не должен соответствовать ключевым словам (все в нижнем регистре) "if", "else", "while",, "истина", "ложь"
Так будет в Java
if(s.matches("^[a-zA-Z][a-zA-Z0-9]*") && !s.equals("if")
&& !s.equals("else") && !s.equals("while") && !s.equals("true")
&& !s.equals("false")){
System.out.println("is ID");
}
else {
System.out.println("not ID");
}
Таким образом, вывод в разные s выглядит так:
//s="if"
not ID
//s="ifif"
is ID
//s="while220"
is ID
//s="90"
not ID
Мой вопрос: могу ли я использовать одно регулярное выражение для достижения всех условий в инструкции if?
благодаря
Вы можете сделать все в одном регулярном выражении, хотя это отрицательное утверждение. Это не сработает, если входная строка, if
или else
или в while
или true
или false
. Ниже шаблона будут соответствовать строки, отличные от этих ключевых слов, которые фактически удовлетворяют [a-zA-Z][a-zA-Z0-9]*
.
if(s.matches("^(?!(?:if|else|while|true|false)$)[a-zA-Z][a-zA-Z0-9]*"))
{
System.out.println("is ID");
}
else {
System.out.println("not ID");
}