Какой хороший способ проверить, содержит ли строка только пробельные символы с регулярным выражением?
Как проверить, является ли строка только пробелом в perl
Ответ 1
if($string=~/^\s*$/){
#is 100% whitespace (remember 100% of the empty string is also whitespace)
#use /^\s+$/ if you want to exclude the empty string
}
Ответ 2
(Я решил отредактировать мой пост, чтобы включить концепции в нижеперечисленный разговор с tobyodavies.)
В большинстве случаев вы хотите определить, является ли что-то пробелом, потому что пробел относительно незначителен, и вы хотите пропустить строку, состоящую из простого пробела. Итак, я думаю, что вы хотите определить, есть ли существенные символы.
Поэтому я стараюсь использовать обратный тест: $str =~ /\S/
. Определение строки предиката содержит один символ S.
Однако, чтобы применить ваш конкретный вопрос, это можно определить отрицательным путем тестирования: $str !~ /\S/
Ответ 3
Ваше выражение регулярного выражения должно искать ^\s + $. Это потребует хотя бы одного пробела.
Если вам интересно, "пробел определяется как [\ t\n\f\r\p {Z}]". См. http://userguide.icu-project.org/strings/regexp.
\t Match a HORIZONTAL TABULATION, \u0009.
\n Match a LINE FEED, \u000A.
\f Match a FORM FEED, \u000C.
\r Match a CARRIAGE RETURN, \u000D.
\p{UNICODE PROPERTY NAME} Match any character with the specified Unicode Property.
Ответ 4
Если вы хотите проверить заданный String
для того, содержит ли он только символы пробела или нет в регулярном выражении...
String given_string=" \t "; //add spaces and tabs any white space character
System.out.println(given_string.matches("^\\s+$"));
Он проверит, по крайней мере, один символ пробела, начиная с начала строки, до конца, если встречается какой-либо символ без пробелов, он вернет false.it работает для случая с NULL и в случае с новыми строками ( ^ _ ^)