Как проверить, является ли строка пустой с помощью регулярных выражений - PullRequest
133 голосов
/ 10 июня 2010

Я пытаюсь сделать простое регулярное выражение, которое проверит, является ли строка пустой или нет.

Case;

"    some"   // not blank
"   " //blank
"" // blank

Ответы [ 7 ]

278 голосов
/ 10 июня 2010

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

^\s*$

Объяснение:

  • ^ - начало привязки строки.
  • $ - это конец якоря строки.
  • \s - это класс пробельных символов.
  • * - это повторение нуля или более.

В многострочном режиме ^ и $ также совпадают с началом и концом строки.

Ссылки:


Альтернатива без регулярных выражений:

Вы также можетепроверить, является ли данная строка line «пустой» (т. е. содержащей только пробелы), trim() -ing, затем проверить, если полученная строка isEmpty().

В Java это будет что-то вродеthis:

if (line.trim().isEmpty()) {
    // line is "blank"
}

Решение regex также можно упростить без привязок (из-за того, как matches определяется в Java) следующим образом:

if (line.matches("\\s*")) {
    // line is "blank"
}

Ссылки API

  • String String.trim()
    • Возвращает копию строки с пропущенными начальным и конечным пробелами.
  • boolean String.isEmpty()
    • Возвращает true тогда и только тогда, когда length() равно 0.
  • boolean String.matches(String regex)
    • Указывает, соответствует ли эта (вся) строка заданному регулярному выражению.
37 голосов
/ 02 сентября 2016

На самом деле в многострочном режиме более правильный ответ таков:

/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm

Принятый ответ: ^\s*$ не соответствует сценарию, когда последняя строка пуста (в многострочномрежим).

8 голосов
/ 10 июня 2010

Попробуйте это:

^\s*$
5 голосов
/ 10 июня 2010

Самым переносимым регулярным выражением будет ^[ \t\n]*$ для соответствия пустой строке (обратите внимание, что вам нужно будет заменить \t и \n на соответственно табуляцию и символ новой строки) и [^ \n\t] для соответствия строке без пробелов.

3 голосов
/ 10 июня 2010

Здесь Пробел означает, что вы имеете в виду.
Строка содержит полный пробел или строка не содержит ничего.
Если вы хотите найти строку, которая ничего не содержит, используйте '/^$/'.

2 голосов
/ 10 октября 2017

Полный кредит bchr02 за этот ответ .Однако мне пришлось немного его изменить, чтобы поймать сценарий для строк, в которых */ (конец комментария) сопровождается пустой строкой.Регулярное выражение сопоставляло непустую строку с */.

Новое: (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm

Все, что я сделал, это добавил ^ в качестве второго символа для обозначения начала строки.

0 голосов
/ 31 августа 2017

Ну ... я возился (используя notepadd ++), и это решение я нашел

\ п \ s

\ n для конца строки (где вы начинаете сопоставление) - каретка не помогла бы в моем случае, так как начало строки - это строка \ s занимает любое место до следующей строки

надеюсь, это поможет

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