我想匹配任何不包含字符串“DontMatchThis”的字符串。
什么是正则表达式?
答案 0 :(得分:46)
试试这个:
^(?!.*DontMatchThis).*$
答案 1 :(得分:23)
匹配不包含特定模式的字符串的正则表达式是
(?s)^(?!.*DontMatchThis).*$
如果您使用的模式没有(?s)
(这是RegexOptions.Singleline
标志的内联版本,使.
匹配换行符号以及所有其他字符),只会在第一行搜索DontMatchThis
,只有没有LF符号的字符串才会与.*
匹配。
模式详情:
(?s)
- 使.
与任何角色匹配的DOTALL /单线修改器^
- 字符串锚的开始(?!.*DontMatchThis)
- negative lookahead检查是否有0个或更多字符(与贪婪.*
子图案匹配 - 注意懒惰.*?
版本(在下一个子模式匹配之前匹配尽可能少的字符)可能会更快地完成工作,如果预期DontMatchThis
更接近字符串开头,则跟随DontMatchThis
.*
- 任意零个或多个字符,尽可能多,最多$
- 字符串的结尾(请参阅主播字符:美元($
))。