如何在进行正则表达式搜索时排除组合?

时间:2018-08-27 08:58:44

标签: c# regex search regex-negation regex-lookarounds

在进行正则表达式搜索时,我想排除一种组合。怎么可能?

输入示例:

if("invalid"=key,if("A01"=key,true,false),if("B01"=key,true,false))

所需的输出:

仅当存在"{}"=key以外的至少任何一种组合(如"invalid"=key时,正则表达式匹配才应返回true(即应跳过此特定组合。每个组合均以= key标记结尾)

谢谢!

1 个答案:

答案 0 :(得分:2)

在匹配" + "子字符串以外的"=key + 1个或更多字符时,可以使用环视检查:

var isMatched = Regex.IsMatch(s, "\"(?!invalid\")[^\"]+\"=key\\b");

请参见regex demo

"(?!invalid")[^"]+"=key\b正则表达式的意思是:

  • "-双引号
  • (?!invalid")-后面没有invalid"子字符串
  • [^"]+-除双引号以外的1个或多个字符
  • "=key-一个"=key子字符串
  • \b-单词边界,_之后不允许字母/数字/ key