使用Visual Studio正则表达式搜索来查找空的Try / Catch块

时间:2013-10-01 13:55:18

标签: regex vb.net visual-studio

我已经找到了这个问题的相关C#版本,但是我没有将其转换为搜索VB.net的语法,并且正则表达式不是我的强项第一个地方,所以我会发布我所得到的东西,然后把自己扔到堆栈的摆布上。

我设法将正则表达式组合在一起:

Catch+\s+\b(_\w+|[\w-[0-9_]]\w*)\b+\s+As+\s+Exception+[\S|\r?\n]

与未指明的例外Catches匹配(加上一个换行符,因为这是我正在努力的部分)。我希望扩展它以寻找空的Try / Catches,但显然我错过了一些东西。

我将*+(Catch|End|Finally)添加到上一个正则表达式中以提供:

Catch+\s+\b(_\w+|[\w-[0-9_]]\w*)\b+\s+As+\s+Exception+[\S|\r?\n]*+(Catch|End|Finally)

据我所知,应该匹配任何空格/换行符,然后是一个有效的Catch结尾关键字,但我不会在那时得到结果。

我搞砸了什么,这里?

1 个答案:

答案 0 :(得分:5)

试试这个:

(Catch(\s?.+As.+)?(\r?\n|\s)*)+(Finally)?(\r?\n|\s)*End Try

我花了很多时间锻炼身体。视觉工作室有时是一种真正的痛苦:D秘诀是正确匹配换行符。我重复了(\r?\n|\s)*。这匹配\r\n\n\s零次或多次。

你搞砸了什么?

通常在正则表达式和编程中,简单性是关键。您试图匹配完整的VB.net异常处理语法并在某处犯一个小错误。有时候,匹配每个字符(。*)如果你真的不关心内容(你想跳过区域,就像这里我们不关心实际的异常类型,如果它甚至在那里!)。我是非常肯定visual studio使用惰性迭代作为标准。

相关问题