C#Regex匹配不包含某个字符串的字符串?

我想匹配任何包含字符串“DontMatchThis”的字符串。

什么是正则表达式?

试试这个:

^(?!.*DontMatchThis).*$ 

匹配不包含特定模式的字符串的正则表达式是

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

如果您使用不带(?s)的模式(这是RegexOptions.Singleline标志的内联版本,使得.匹配换行符号以及所有其他字符),则只会在第一行搜索DontMatchThis ,只有没有LF符号的字符串才会匹配.*

图案细节

  • (?s) – DOTALL / Singleline修改器制作. 匹配任何角色
  • ^ – 字符串锚点的开始
  • (?!.*DontMatchThis)负向前瞻检查是否有任何0个或更多字符(与贪婪.* subpattern匹配 – 注意一个懒惰.*?版本(在下一个子模式匹配之前匹配尽可能少的字符)可能会得到如果DontMatchThis预计更接近字符串开始,那么工作就会更快完成)接着是DontMatchThis
  • .* – 任意零个或多个字符,尽可能多,最多
  • $ – 字符串的结尾(参见Anchor Characters:Dollar( $ )。