C # Regex, чтобы соответствовать строке, которая не содержит определенной строки? - PullRequest
23 голосов
/ 23 августа 2009

Я хочу сопоставить любую строку, которая не содержит строку "DontMatchThis".

Что такое регулярное выражение?

Ответы [ 2 ]

48 голосов
/ 23 августа 2009

попробуйте это:

^(?!.*DontMatchThis).*$
23 голосов
/ 26 августа 2016

Регулярное выражение для соответствия строке, которая не содержит определенного шаблона, равно

(?s)^(?!.*DontMatchThis).*$

Если вы используете шаблон без (?s) (который является встроенной версией флага RegexOptions.Singleline, в котором . соответствует символу новой строки LF, а также всем другим символам), DontMatchThis будет только выполняется поиск в первой строке, и только строка без символов LF будет сопоставляться с .*.

Детали шаблона :

  • (?s) - модификатор DOTALL / Singleline, заставляющий . соответствовать любому символу
  • ^ - начало привязки строки
  • (?!.*DontMatchThis) - отрицательный прогноз проверка наличия 0 или более символов (соответствует жадному шаблону .* - NOTE a lazy * Версия 1031 * (сопоставление как можно меньшего числа символов до следующего совпадения подшаблона) может выполнить работу быстрее, если ожидается, что DontMatchThis ближе к началу строки) с последующим DontMatchThis
  • .* - любой ноль или более символов, как можно больше, до
  • $ - конец строки (см. Символы привязки: доллар ($) ).
...