Регулярное выражение для чего-либо, кроме пустой строки в С#
Можно ли использовать регулярное выражение для обнаружения всего, что НЕ является "пустой строкой", как это:
string s1 = "";
string s2 = " ";
string s3 = " ";
string s4 = " ";
и др.
Я знаю, что я мог бы использовать trim и т.д., но я хотел бы использовать регулярное выражение.
Спасибо.
Christian
Ответы
Ответ 1
^(?!\s*$).+
будет соответствовать любой строке, содержащей хотя бы один непространственный символ.
Итак,
if (Regex.IsMatch(subjectString, @"^(?!\s*$).+")) {
// Successful match
} else {
// Match attempt failed
}
должен сделать это для вас.
^
привязывает поиск в начале строки.
(?!\s*$)
, так называемый позитивный lookahead, утверждает, что невозможно совместить только пробельные символы до конца строки.
.+
будет фактически выполнять совпадение. Он будет соответствовать чему угодно (кроме новой строки) до конца строки. Если вы хотите разрешить новые строки, вам нужно установить параметр RegexOptions.Singleline
.
Оставайтесь над предыдущей версией своего вопроса:
^\s*$
соответствует строкам, которые содержат только пробелы (или пусты).
Точная противоположность:
^\S+$
соответствует только строки, которые состоят только из символов без пробелов, минимум одного символа.
Ответ 2
В .Net 4.0 вы также можете вызвать String.IsNullOrWhitespace
.
Ответ 3
Вы можете сделать одну из двух вещей:
- соответствует
^\s*$
; совпадение означает, что строка "пустая"
-
^
, $
- начало и конец строковых якорей соответственно
-
\s
- символ пробела
-
*
- это нулевое или большее повторение
- найдите
\s
; вхождение означает, что строка НЕ "пуста"
-
\s
является отрицательной версией \s
(обратите внимание на разницу в случае)
-
\s
поэтому соответствует любому символу без пробелов
Ссылки
Связанные вопросы
Ответ 4
Вы также можете использовать:
public static bool IsWhiteSpace(string s)
{
return s.Trim().Length == 0;
}
Ответ 5
Для этого не требуются утверждения. \S
должен работать сам по себе, поскольку он соответствует любому без пробелов.
Ответ 6
Как насчет?
/.*\S.*/
Это означает
/
= разделитель
.*
= ноль или больше ничего, кроме новой строки
\S
= все, кроме пробелов (новая строка, табуляция, пробел)
чтобы вы получили
совпадение ничего, кроме новой строки + что-то не пробельное + ничего, кроме новой строки
Ответ 7
Я думаю, что [ ]{4}
может работать в примере, где вам нужно обнаружить 4 пробела.
То же самое с остальными: [ ]{1}
, [ ]{2}
и [ ]{3}
. Если вы хотите обнаружить пустую строку вообще, ^[ ]*$
будет делать.
Ответ 8
Создайте "регулярное выражение для обнаружения пустой строки", а затем инвертируйте его.
Включение регулярного языка - это обычный язык, и я думаю, что библиотека регулярных выражений из CLR может поддерживать инверсию, например
grep -invert-match