Visual Studio正则表达式匹配吞噬异常

时间:2010-08-16 12:23:39

标签: c# regex visual-studio

我需要一个Visual Studio正则表达式来匹配吞噬的异常。

这是我得到的,但它仍然匹配有效的代码:

catch (ArgumentNullException)
{
  //...
  throw;
}


catch:Wh*\(:Wh*.*Exception.*\):Wh*\{[:Wh*.*]*[^(throw:Wh*.*;)].*

我该如何解决这个问题?

编辑:我是否可以从评论中看出,在Visual Studio中测试正则表达式中是否存在模式是不可能的? - 这是我的问题的主旨。我想抛开方法有效性的问题(我完全了解FxCop等人,lexing和解析,以及seminal post。我也知道吞咽异常有时可以。)

1 个答案:

答案 0 :(得分:2)

我将在这里回答我自己的问题。这是一个学术问题,因为或者当然,正如以前的评论者如此急切地指出的那样,无上下文语法和正则表达式的能力存在根本差异,此外还有多种现有的基于非正则表达式的工具。为我执行此功能。

我想探索Visual Studio的负面前瞻功能。根据评论herehere中的报告,Visual Studio的负向前瞻行为在某些情况下并不像您预期​​的那样(某些人称之为有缺陷)。

我不是正则表达式的专家,但我希望正则表达式(throw)匹配仅包含throw的行 - 事实确实如此。我还希望~(throw)(这是Visual Studio中负向前瞻的语法)而不是来匹配同一行 - 但是,在Visual Studio中,它 >。

玩弄了我原来的正则表达式,包括简化测试模式,我得出的结论是,使用Visual Studio正则表达式搜索的当前实现执行负向前瞻很困难,几乎不可能。