用于匹配之后没有空行的代码块的正则表达式

时间:2017-11-30 13:33:59

标签: c# regex visual-studio replace

我想清理代码并在代码块后添加空行。

例如:

if (foo)
{
    DoFooStuff();
}
if (bar)
{
    DoBarStuff();
}
else
{    
    try
    {
        MightThrowError();
    }
    catch (Exception ex)
    {
        LogError(ex);
    }
}
MoreStuffToDo(true);

如果在if (bar)之前有一个空行,我发现这段代码更容易阅读,所以你可以看到这里有两个不同的条件。因此,我希望匹配类似于第4行第二行的所有情况,并添加新行。但是,在" else"," catch"之前,它不应该与大括号匹配。和第三行的第一行,它是嵌套块中的另一个大括号。

我在Visual Studio 2017中使用Find函数,我的代码是C#。我在上面的例子中得到的结果是:

if (foo)
{
    DoFooStuff();
}

if (bar)
{
    DoBarStuff();
}
else
{    
    try
    {
        MightThrowError();
    }
    catch (Exception ex)
    {
        LogError(ex);
    }
}

MoreStuffToDo(true);

我尝试过以下正则表达式:

}[\r\n]\t*.

(即匹配一个紧密的大括号,一个换行符,然后是任意数量的标签,然后是任何非换行符。)

我还需要它来匹配空格和制表符(我如何制作它"或者#34;?)理想情况下我不需要匹配后面的花括号以及单词{{1 },elsecatch。不过,我准备手动完成一些工作。

我正在寻找的是什么,如果是,那么正则表达式是什么?

1 个答案:

答案 0 :(得分:0)

使用符号:     | 适用于逻辑或正则表达式。例如:

}[\r\n][\t*|\s*].

应匹配任意数量的标签或任意数量的空格。但由于tab是一个空白字符,你可以使用

}[\r\n][\s*].