我需要一个Visual Studio正则表达式来匹配吞噬的异常。
这是我得到的,但它仍然匹配有效的代码:
catch (ArgumentNullException)
{
//...
throw;
}
catch:Wh*\(:Wh*.*Exception.*\):Wh*\{[:Wh*.*]*[^(throw:Wh*.*;)].*
我该如何解决这个问题?
编辑:我是否可以从评论中看出,在Visual Studio中测试正则表达式中是否存在模式是不可能的? - 这是我的问题的主旨。我想抛开方法有效性的问题(我完全了解FxCop等人,lexing和解析,以及seminal post。我也知道吞咽异常有时可以。)
答案 0 :(得分:2)
我将在这里回答我自己的问题。这是一个学术问题,因为或者当然,正如以前的评论者如此急切地指出的那样,无上下文语法和正则表达式的能力存在根本差异,此外还有多种现有的基于非正则表达式的工具。为我执行此功能。
我想探索Visual Studio的负面前瞻功能。根据评论here和here中的报告,Visual Studio的负向前瞻行为在某些情况下并不像您预期的那样(某些人称之为有缺陷)。
我不是正则表达式的专家,但我希望正则表达式(throw)
匹配仅包含throw
的行 - 事实确实如此。我还希望~(throw)
(这是Visual Studio中负向前瞻的语法)而不是来匹配同一行 - 但是,在Visual Studio中,它 >。
玩弄了我原来的正则表达式,包括简化测试模式,我得出的结论是,使用Visual Studio正则表达式搜索的当前实现执行负向前瞻很困难,几乎不可能。