正则表达式匹配字符串,但不是另一个

本文关键字:另一个 字符串 正则表达式 | 更新日期: 2023-09-27 18:12:52

我有以下两个字符串

/signon/default.wl?rs=WLW11.10&vr=2.0&fn=_top
/signon/default.wl?fn=%5Ftop&newdoor=true&rs=WLW11%2E10&vr=2%2

我想匹配除了不包含newdoor

的所有字符串到目前为止,我有以下regex

/登录/default.wl ' ? (? = (' w) *) (? ! newdoor)

但是它匹配所有字符串。谁能指出我做错了什么吗?

正则表达式匹配字符串,但不是另一个

您可以试试这个/signon/default.wl'?(?!.*newdoor).*

它使用负向前看断言在输入字符串中没有出现newdoor。代码看起来像这样

resultString = Regex.Match(subjectString, @"/signon/default.wl'?(?!.*newdoor).*", 
               RegexOptions.IgnoreCase).Value;
/signon/default.wl'?(?=['w]*)(?!newdoor)

(?=)(?!)都是零宽度断言,不消耗任何输入。试一试:

/signon/default.wl'?(.(?!newdoor))*$

为什么不这样写呢:

subjectString.contains("newdoor");