Как я могу сделать регулярное выражение Java все или ничего? - PullRequest
1 голос
/ 07 апреля 2011

Я пытаюсь сделать регулярное выражение "все или ничего" в том смысле, что данное слово должно ТОЧНО соответствовать регулярному выражению - если нет, совпадение не найдено.

Например, если мое регулярное выражение:

^[a-zA-Z][a-zA-Z|0-9|_]*

Тогда я бы хотел соответствовать:

cat9
cat9_
bob_____

Но я бы НЕ хотел совпадать:

cat7-
cat******
rango78&&

Я хочу, чтобы мое регулярное выражение было настолько строгим, насколько это возможно, подходя к принципу «все или ничего». Как я могу это сделать?

РЕДАКТИРОВАТЬ: Чтобы сделать мое регулярное выражение абсолютно ясным, шаблон должен начинаться с буквы, за которой следует любое количество цифр, букв или подчеркиваний. Другие символы не допускаются. Ниже приведена программа, которую я использую для проверки своего регулярного выражения.

Pattern p = Pattern.compile("^[a-zA-Z][a-zA-Z|0-9|_]*");

    Scanner in = new Scanner(System.in);
    String result = "";


    while(!result.equals("-1")){

        result = in.nextLine();

        Matcher m = p.matcher(result);

        if(m.find())
        {
            System.out.println(result);
        }
    }

Ответы [ 3 ]

5 голосов
/ 07 апреля 2011

Я думаю, что если вы используете String.matches(regex), то вы получите эффект, который вы ищете.В документации сказано, что matches() вернет true, только если строка whole соответствует шаблону.

2 голосов
/ 07 апреля 2011

Обратите внимание, что \w совпадает с [A-Za-z0-9_].И вам нужно привязать конец строки примерно так:

Pattern p = Pattern.compile("^[a-zA-Z]\\w*$")
2 голосов
/ 07 апреля 2011

Регулярное выражение не будет соответствовать второму примеру. Это уже строгое, так как * и & не в разрешенном наборе символов.

Может совпадать с префиксом, но вы можете избежать этого, добавив '$' в конец регулярного выражения, что явно соответствует концу ввода. Так что попробуйте,

^[a-zA-Z][a-zA-Z|0-9|_]*$

Это обеспечит совпадение со всей входной строкой, а не только с префиксом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...