Regex Java "тест 123" должен завершиться неудачей - PullRequest
0 голосов
/ 28 декабря 2018

Итак, я создал программу, которая будет проходить через входной файл и вытягивать только строки с двумя словами в них.Я тогда пытаюсь вытянуть только строки ТОЛЬКО буквами.Если есть какое-то число, мне нужно, чтобы оно провалилось.До сих пор после исследования я придумал код, приведенный ниже, и просто застрял в том, как еще заставить «тест 123» провалиться.Он продолжает проходить. Ниже приведен вызов моей функции сопоставления и самой функции.* *

else if (line.matches("[\\w\\-.]{2,} [\\w\\-.]{2,}"))
        {
            getmatch();
        } 




public static String getMatch() 
    {
        if (line.matches("/[a-zA-Z]+/g") )
        {
            match=line;
        }

        return match;
    }

1 Ответ

0 голосов
/ 28 декабря 2018

Я бы использовал следующий общий шаблон для сопоставления строк с двумя буквенными словами:

\s*[A-Za-z]+\s+[A-Za-z]+\s*

Этот шаблон также будет учитывать любое количество пробелов по обе стороны от двух слов или вмежду ними.Обратите внимание, что String#matches по умолчанию включает начальный и конечный якоря вокруг шаблона входного регулярного выражения, поэтому нам не нужно явно включать их, хотя я включил их в демонстрационную версию ниже.

Вы бы использовали этот шаблонкак:

String input = " Hello World  ";
if (input.matches("\\s*[A-Za-z]+\\s+[A-Za-z]+\\s*")) {
    System.out.println("Found a match!");
}

Демо

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