Как проверить, является ли строка пустой с использованием регулярного выражения
Я пытаюсь сделать простое регулярное выражение, которое проверяет, является ли строка пустой или нет.
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
Ответ 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 принимает любое пространство до следующей строки
надеюсь, что это поможет