37

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

什么是正则表达式?

4

2 回答 2

65

试试这个:

^(?!.*DontMatchThis).*$
于 2009-08-23T11:14:01.383 回答
35

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

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

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

图案细节

  • (?s)- 一个 DOTALL/Singleline 修饰符.匹配任何字符
  • ^- 字符串锚的开始
  • (?!.*DontMatchThis)-负前瞻检查是否有 0 个或更多字符(与贪婪.*子模式匹配 -注意惰性.*?版本(在下一个子模式匹配之前匹配尽可能少的字符)如果DontMatchThis预期更接近字符串开始,则可能会更快完成工作) 紧随其后的是DontMatchThis
  • .*- 任何零个或多个字符,尽可能多,最多
  • $- 字符串的结尾(请参阅锚字符:美元($)。
于 2016-08-25T21:01:59.203 回答