Я пытаюсь сделать простое регулярное выражение, которое проверяет, является ли строка пустой или нет.
Case;
" some" // not blank
" " //blank
"" // blank
Я пытаюсь сделать простое регулярное выражение, которое проверяет, является ли строка пустой или нет.
Case;
" some" // not blank
" " //blank
"" // blank
Образец, который вы хотите, выглядит примерно так в многострочном режиме:
^\s*$
Пояснение:
^
- начало привязки строки.$
- конец привязки строки.\s
- класс символов пробелов.*
имеет нулевое или большее количество повторений.В многострочном режиме ^
и $
также соответствуют началу и концу строки.
Вы также можете проверить, является ли заданная строка line
"пустой" (т.е. содержит только пробелы) trim()
-инг, а затем проверяет, не получается ли полученная строка isEmpty()
.
В Java это будет примерно так:
if (line.trim().isEmpty()) {
// line is "blank"
}
Решение regex также может быть упрощено без привязок (из-за того, как matches
определено в Java) следующим образом:
if (line.matches("\\s*")) {
// line is "blank"
}
String String.trim()
boolean String.isEmpty()
true
, если и только если length()
- 0
.boolean String.matches(String regex)
На самом деле в многострочном режиме более правильный ответ таков:
/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
Принятый ответ: ^\s*$
не соответствует сценарию, когда последняя строка пуста (в многострочном режиме).
Попробуйте следующее:
^\s*$
Наиболее переносимым регулярным выражением будет ^[ \t\n]*$
для соответствия пустой строке (обратите внимание, что вам нужно будет заменить \t
и \n
на вкладку и новую строку соответственно) и [^ \n\t]
, чтобы соответствовать строке без пробелов.
Здесь Blank означает, что вы имеете в виду.
Строка содержит полные пробелы или строка не содержит ничего.
Если вы хотите совместить строку, которая не содержит ничего, используйте "/^ $/".
Полный кредит bchr02 для ответа . Тем не менее, мне пришлось немного изменить его, чтобы поймать сценарий для строк с */
(конец комментария), за которым следует пустая строка. Регулярное выражение соответствовало непустой строке с */
.
Новое: (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
Все, что я сделал, это добавить ^
в качестве второго символа, чтобы обозначить начало строки.
Ну... Я потрудился (используя notepadd ++), и это решение, которое я нашел
\ п \s
\n для конца строки (где вы начинаете сопоставлять) - карет не помог бы в моем случае, так как начало строки - это строка \ s принимает любое пространство до следующей строки
надеюсь, что это поможет