проверить строку, состоящую из чисел, разделенных только пробелами - PullRequest
0 голосов
/ 14 октября 2018

У меня есть строка, которая может иметь только целые числа, разделенные пробелом.Например:

1 2 3
4 5 6
9 8 7
1 p 3 // it should not pass

Поэтому в моей строке всегда должны быть числа, разделенные пробелом, поэтому я добавил эту проверку регулярного выражения, чтобы проверить строку, но она не работает:

String line = "1 2 3"; // "1 p 3"
if(!line.matches("[ ]?\\d+")) {
    //it should come here for "1 p 3" string
}

Что не так с моим регулярным выражением здесь?

1 Ответ

0 голосов
/ 14 октября 2018

.matches будет иметь значение true только в том случае, если строка целом соответствует регулярному выражению.(Вы можете думать, что он неявно окружен ^ и $.) Таким образом, чтобы проверить строку, содержащую только цифры с пробелами, используйте:

\d+(?: \d+)*

https://regex101.com/r/wK9WhP/1

Обратите внимание, что нет необходимости в наборе символов, содержащем только один символ - легче полностью пропустить набор символов.

String line = "1 2 3"; // "1 p 3"
if(line.matches("\\d+(?: \\d+)*")) {
    System.out.println("match");
} else {
    System.out.println("no match");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...