Как проверить, является ли строка только пробелом в perl - PullRequest
11 голосов
/ 24 мая 2011

Какой хороший способ проверить, содержит ли строка только пробельные символы с регулярным выражением?

Ответы [ 4 ]

16 голосов
/ 24 мая 2011
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
}
9 голосов
/ 24 мая 2011

(Я решил отредактировать свой пост, включив понятия в приведенный ниже разговор с tobyodavies.)

В большинстве случаев вы хотите определить, является ли что-то пробелом, потому что пробел относительно незначителен, и выхочу пропустить строку, состоящую только из пробелов.Итак, я думаю, что вы хотите определить, есть ли существенные персонажи.

Поэтому я склонен использовать обратный тест: $str =~ /\S/.Определение предиката: «строка содержит один S символ воспламенения».

Однако, чтобы применить ваш конкретный вопрос, это можно определить отрицательно, протестировав: $str !~ /\S/

1 голос
/ 24 мая 2011

Ваш оператор регулярного выражения должен искать ^ \ 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.
0 голосов
/ 28 июля 2016

Если вы хотите проверить заданное значение String, содержит ли оно только пробельные символы или нет в регулярном выражении ...

String given_string="   \t "; //add spaces and tabs any white space character
System.out.println(given_string.matches("^\\s+$"));

Он проверит наличие по крайней мере одного символа пробела, начинающегося с начала строки, до конца, если произойдет какой-либо непробельный символ, он вернет false.it работает для случая NULL и случая новых строк (( ^ _ ^)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...