正则表达式查找同一字符的多次出现,但不包括行中的单词

时间:2018-11-08 12:11:21

标签: regex visual-studio visual-studio-2017

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

正则表达式将在每一行中搜索多次出现的字符=。目标应在两个=之间。 但是我想排除多个单词,例如(AND,OR,SELECT等)

我的查询现在看起来像这样:

    $cartcount = WC()->cart->get_cart_contents_count();

    if ($cartcount > 4) { 
      echo do_shortcode( '[wof_wheel id="1111"]' );
    }else{
     //item count is less than 4
   }

所需结果:

  

匹配()A(= B =)C

     

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

X避免A = D AND B = C

X避免A == B

1 个答案:

答案 0 :(得分:1)

您可以使用

=(?:(?!\b(?:AND|OR|SELECT)\b)[^=])+=

请注意,在VS搜索和替换工具中,否定的字符类[^=]与换行符不匹配。如果要确保它与换行符不匹配,请在\r内添加\n[^=\r\n]

详细信息

  • =-一个=符号
  • (?:(?!\b(?:AND|OR|SELECT)\b)[^=])+-除=[^=]),1个或多个重复(+)之外的任何字符,不会在非捕获内开始任何子字符串组(ANDORSELECT)作为整个单词(因为\b与单词边界匹配)
  • =-一个=符号

enter image description here