如何在Visual Studio Regex中捕获任何字符(包括\ n)

时间:2017-09-20 13:40:45

标签: html regex visual-studio wildcard

我想做什么

我想在Visual Studio中重新格式化一堆类似编写的HTML文件。 html部分可能有不同的行数,但我知道它们以<div id="some_id">标记开头,并且没有其他<div>标记。那么我怎么写一个正则表达式,在其间捕获任意数量的行?

到目前为止我尝试了什么

我无法使用.,因为它没有抓住换行符。但我也不知道如何告诉Visual Studio捕获\n.。我知道如何使用集合(如[a-z0-9]),但只要将.放入其中就会变成文字。所以<div id="some_id">[.\n]*?</div>只捕获包含一堆点和新行的div

提前致谢

2 个答案:

答案 0 :(得分:2)

在Visual Studio查找和替换功能中,您可以使用[\s\S\r]字符类匹配任何字符,包括换行符。出于某种原因,[\s\S]与CR(回车)符号不匹配。

您的[.\n]字符类仅匹配文字.或换行符。

因此,请使用

<div id="some_id">[\s\S\r]*?</div>
                  ^^^^^^^^^^

答案 1 :(得分:0)

[.\n]不会出于某种原因,我怀疑[.]匹配点而不是任何字符。

(.|\n)可用于匹配任何字符,包括换行符。

如果您需要拿起它来进行组替换,请在整个感官上添加额外的括号。

例如:

匹配字符串: Assert.ThrowsException<(.*)>\(((.|\n)*?),((.|\n)*?)\);

具有替换模式: Assert.Throws<$1>($2);

可以将Visual Studio样式异常转换为xUnit样式异常。