Регулярный экспресс для сопоставления символов и цифр, но не конкретных строк в Java

1

Добрый вечер ребята,

У меня вопрос к регулярному выражению в 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?

благодаря

Теги:
pattern-matching

1 ответ

0
Лучший ответ

Вы можете сделать все в одном регулярном выражении, хотя это отрицательное утверждение. Это не сработает, если входная строка, 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");
}
  • 0
    Большое спасибо, это работает! @ Авинаш Радж

Ещё вопросы

Сообщество Overcoder
Наверх
Меню