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



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



Case;



"    some"   // not blank
" " //blank
"" // blank
827   7  

7 ответов:

шаблон вы хотите, что-то вроде этого в многострочном режиме:

^\s*$

объяснение:

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

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

ссылки:


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

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

в Java, это было бы что-то вроде это:

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

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

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

ссылки на API

  • 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] чтобы соответствовать строке без пробелов.

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

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

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

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

хорошо...Я возился вокруг (с помощью notepadd++) и это решение я нашел

\n\s

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

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

Comments

    Ничего не найдено.