C#Regex匹配不包含某个字符串的字符串?
我想匹配任何不包含字符串“DontMatchThis”的字符串。
什么是正则表达式?
试试这个:
^(?!.*DontMatchThis).*$
匹配不包含特定模式的字符串的正则表达式是
(?s)^(?!.*DontMatchThis).*$
如果您使用不带(?s)
的模式(这是RegexOptions.Singleline
标志的内联版本,使得.
匹配换行符号以及所有其他字符),则只会在第一行搜索DontMatchThis
,只有没有LF符号的字符串才会匹配.*
。
图案细节 :
-
(?s)
– DOTALL / Singleline修改器制作.
匹配任何角色 -
^
– 字符串锚点的开始 -
(?!.*DontMatchThis)
– 负向前瞻检查是否有任何0个或更多字符(与贪婪.*
subpattern匹配 – 注意一个懒惰.*?
版本(在下一个子模式匹配之前匹配尽可能少的字符)可能会得到如果DontMatchThis
预计更接近字符串开始,那么工作就会更快完成)接着是DontMatchThis
-
.*
– 任意零个或多个字符,尽可能多,最多 -
$
– 字符串的结尾(参见Anchor Characters:Dollar($
) )。