【问题标题】:Regex to check for "+=" inside of a method正则表达式检查方法内部的“+=”
【发布时间】:2013-12-10 17:56:59
【问题描述】:

通过我们的代码库,我们的许多自定义控件都有一个DetachEvents 方法,该方法在控件被释放时被调用。很多时候,其他开发人员错误地是事件处理程序

private void DetachEvents()
{
    myControl.Click += new EventHandler(myControl_Click);
}

当然应该是-= 而不是+=

我正在尝试为 Visual Studios 中的查找和替换工具提供一个正则表达式,以仅找到包含 +=DetachEvent 方法,但我不知道该怎么做。如果我继续寻找DetachEvents()的每一次出现,我会在这里一整天。

我试过:DetachEvents()[.]+=[.] 认为该句点会在 += 之前和之后找到任何东西,但它什么也没找到。

【问题讨论】:

标签: c# regex visual-studio-2010 visual-studio


【解决方案1】:

尝试转义+

DetachEvents().*\+=

但是这将匹配DetatchEvents() 之后的任何+= 实例。假设您在 DetachEvents 方法中没有任何其他代码块,您可能想要使用 [^}] 而不是 .

DetachEvents()[^}]*\+=

【讨论】:

  • 第一个似乎没有找到任何东西,第二个错误说Empty character set [] or [^] was specified. :( 尝试删除花括号,它没有给我一个错误,但也没有不返回任何东西。
  • @sab669 如果你尝试转义 } 会怎样,就像这样 DetachEvents()[^\}]*\+=
  • @gleng 苍白,瘦削的白人。
  • @p.s.w.g +1 实际回答这个问题。当我看到你的名字时,我一直想知道!
  • 作为附录:如果您的 DetachEvents 方法在 += 之前可以包含任意数量的代码块,则正则表达式不再强大到无法匹配您想要的内容,除非您可以找出一个可以匹配方法或属性定义(但不能匹配方法调用)的正则表达式,并对它们进行否定匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2015-03-12
  • 2011-12-19
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
相关资源
最近更新 更多