如何在 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 样式异常。
我想做什么:
我想重新格式化 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 样式异常。