Regex查找同一字符的多个匹配项,并排除行中的单词

Regex查找同一字符的多个匹配项,并排除行中的单词,regex,visual-studio,visual-studio-2017,Regex,Visual Studio,Visual Studio 2017,我正在使用Visual Studio 2017 Search(使用.NET Framework正则表达式)尝试构建一个复杂的正则表达式,但我没有将它们组合在一起 正则表达式将在每行中搜索多个字符=。目标值应介于两个=。 但我想排除多个单词,如(AND,OR,SELECT等) 我现在的查询如下所示: ^(=.*){2}.$ 预期结果: 匹配()A(=B=)C 匹配()A和A(=B=)C) 避免A=D和B=C 避免A==B您可以使用 =(?:(?!\b(?:AND|OR|SELECT)\b)[^=

我正在使用Visual Studio 2017 Search(使用.NET Framework正则表达式)尝试构建一个复杂的正则表达式,但我没有将它们组合在一起

正则表达式将在每行中搜索多个字符=。目标值应介于两个=。 但我想排除多个单词,如(AND,OR,SELECT等)

我现在的查询如下所示:

^(=.*){2}.$
预期结果:

匹配()A(=B=)C

匹配()A和A(=B=)C)

避免A=D和B=C

避免A==B

您可以使用

=(?:(?!\b(?:AND|OR|SELECT)\b)[^=])+=
请注意,在VS搜索和替换工具中,
[^=]
,一个被求反的字符类,不匹配换行符。如果要确保它与换行符不匹配,请在内部添加
\r
\n
[^=\r\n]

详细信息

  • =
    -一个
    =
    符号
  • (?:(?!\b(?:AND | OR | SELECT)\b)[^=]+
    -任何字符,但
    =
    [^=]
    ),1次或多次重复(
    +
    ),不启动非捕获组(
    选择
    )内的任何子字符串作为整个单词(因为
    \b
    与单词边界匹配)
  • =
    -一个
    =
    符号

试试
=(?:(?!\b(?:和|或|选择)\b)[^=])+=
我也不知道如何测试我的特定正则表达式引擎。输入是我庞大的代码库,我正试图使用visual studio的正则表达式搜索查找所有bug。对于.NETVS,S&R正则表达式与普通的.NET正则表达式略有不同。S&R功能在更换时也有点问题。