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

Sha*_*ica 26 c# regex regex-negation

我想匹配任何包含字符串"DontMatchThis"的字符串.

什么是正则表达式?

Kam*_*rey 51

试试这个:

^(?!.*DontMatchThis).*$
Run Code Online (Sandbox Code Playgroud)

  • 请解释一下.这是怎么回事? (14认同)

Wik*_*żew 28

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

(?s)^(?!.*DontMatchThis).*$
Run Code Online (Sandbox Code Playgroud)

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

图案细节:

  • (?s)- DOTALL/Singleline修改器可以.匹配任何角色
  • ^ - 字符串锚的开始
  • (?!.*DontMatchThis)- 否定前瞻检查是否有任何0个或更多字符(与贪婪.*子模式匹配- 注意一个懒惰.*?版本(在下一个子模式匹配之前匹配尽可能少的字符)可能会更快地完成作业,如果DontMatchThis预期更接近字符串开始随后DontMatchThis
  • .* - 任何零个或多个字符,尽可能多,最多
  • $- 字符串的结尾(参见Anchor Characters:Dollar($)).