Как проверить, является ли строка пустой с использованием регулярного выражения

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

Case;

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

Ответ 1

Образец, который вы хотите, выглядит примерно так в многострочном режиме:

^\s*$

Пояснение:

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

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

Ссылки:


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

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

В Java это будет примерно так:

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)
    • Сообщает, соответствует ли эта строка (целая) данному регулярному выражению.

Ответ 2

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

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

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

Ответ 3

Попробуйте следующее:

^\s*$

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

\ п \s

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

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