如何在 Visual Studio 正则表达式中捕获任何字符(包括 \n)

How to catch any character (including \n) in Visual Studio Regex

我想做什么:

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

到目前为止我尝试了什么:

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

提前致谢

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

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

因此,使用

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

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

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

如果您需要将其提取出来进行组替换,则在整个句子上添加额外的括号。

例如:

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

替换模式: Assert.Throws<>();

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