我想做什么:
我想在Visual Studio中重新格式化一堆类似编写的HTML文件。 html部分可能有不同的行数,但我知道它们以<div id="some_id">
标记开头,并且没有其他<div>
标记。那么我怎么写一个正则表达式,在其间捕获任意数量的行?
到目前为止我尝试了什么:
我无法使用.
,因为它没有抓住换行符。但我也不知道如何告诉Visual Studio捕获\n
或.
。我知道如何使用集合(如[a-z0-9]
),但只要将.
放入其中就会变成文字。所以<div id="some_id">[.\n]*?</div>
只捕获包含一堆点和新行的div
提前致谢
答案 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样式异常。