С# Regex соответствует строке, которая не содержит определенную строку?
Я хочу сопоставить любую строку, в которой не содержится строка "DontMatchThis".
Что такое регулярное выражение?
Ответ 1
попробуйте следующее:
^(?!.*DontMatchThis).*$
Ответ 2
Регулярное выражение, соответствующее строке, не содержащей определенного шаблона,
(?s)^(?!.*DontMatchThis).*$
Если вы используете шаблон без (?s) (который является встроенной версией флага RegexOptions.Singleline, который позволяет . соответствовать символу LF новой строки, а также всем другим символам), DontMatchThis будет только поиск в первой строке, и только строка без символов LF будет соответствовать .*.
Сведения о шаблоне:
(?s) - модификатор DOTALL/Singleline, который делает . совпадением с любым символом
^ - начало привязки строки
(?!.*DontMatchThis) - a негативный просмотр, проверяя наличие 0 или более символов (совпадающих с жадным .* subpattern - ПРИМЕЧАНИЕ версия lazy .*? (совпадающая как несколько символов, насколько возможно до следующего соответствия подшаблона) может ускорить выполнение задания, если DontMatchThis ожидается ближе к началу строки) затем DontMatchThis
.* - любые ноль или более символов, насколько это возможно, до
$ - конец строки (см. Символы привязки: доллар ($)).