【问题标题】:How to retrieve all the expressions NOT following a specific format如何检索所有不遵循特定格式的表达式
【发布时间】:2015-05-03 16:34:22
【问题描述】:

我正在使用 Visual Studio 2013,我需要搜索所有 return 表达式,它们的括号遵循这种格式:

return (SomeObject);

例如,我需要找到这样的语句:

return objItem;

我尝试了以下作为启用“使用正则表达式”的搜索表达式,但没有找到它们:

return (?!()

有人可以解释为什么这不起作用和/或建议对我的正则表达式进行改进/替代吗?

【问题讨论】:

  • "但它不起作用" - 正则表达式发现了什么?
  • 什么也没找到。

标签: regex visual-studio-2013


【解决方案1】:

您的正则表达式return (?!() 无效,因为( 符号必须在负后向(?!\() 内转义。但是,这只会匹配 return

如果你需要捕获所有后面不带括号的“return”,你可以使用

\s*return\s+[^()]+;

或者,您可以使用否定前瞻检查其后是否没有 xxx (yyy) 字符串:

(?!return\s*\([^)]+?\)\s*;)\s*return\s+[^;]+;

demo

【讨论】:

  • 我试过了,但仍然没有找到任何东西!我确实有这样的事情:return View();
  • 但它发现了这个:return View;这对我不起作用,因为我需要找到后面没有括号的返回。
  • 谢谢stribizhev!这也有效!但是,它会在每次搜索中找到与其制表符空格匹配的表达式 3 次。
【解决方案2】:

我想这就是你想要的:

return [^(].*;

这会找到如下行:

return something;
return func(x);

但不是

return (foo);

demo

【讨论】:

  • 它还将捕获return View(intval);。不知道这是否是你想要的。我建议使用检查 return 是否紧跟括号结构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 2020-09-27
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多