C# Regex to match a string that doesn't contain a certain string?

62,751

Solution 1

try this:

^(?!.*DontMatchThis).*$

Solution 2

The regex to match a string that does not contain a certain pattern is

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

If you use the pattern without the (?s) (which is an inline version of the RegexOptions.Singleline flag that makes . match a newline LF symbol as well as all other characters), the DontMatchThis will only be searched for on the first line, and only a string without LF symbols will be matched with .*.

Pattern details:

  • (?s) - a DOTALL/Singleline modifier making . match any character
  • ^ - start of string anchor
  • (?!.*DontMatchThis) - a negative lookahead checking if there are any 0 or more characters (matched with greedy .* subpattern - NOTE a lazy .*? version (matching as few characters as possible before the next subpattern match) might get the job done quicker if DontMatchThis is expected closer to the string start) followed with DontMatchThis
  • .* - any zero or more characters, as many as possible, up to
  • $ - the end of string (see Anchor Characters: Dollar ($)).
Share:
62,751
Shaul Behr
Author by

Shaul Behr

Husband, father, grandfather, software architect, Orthodox rabbi, fiction author, fitness enthusiast. https://shaulbehr.com

Updated on September 25, 2020

Comments

  • Shaul Behr
    Shaul Behr over 3 years

    I want to match any string that does not contain the string "DontMatchThis".

    What's the regex?