匹配任何垂直空格的正则表达式

Regular expression to match any vertical whitespace

是否有 .NET 的正则表达式模式可以匹配任何会导致多行的字符,即任何垂直空白字符,就像 perl 正则表达式对 \v 所做的那样?换句话说,有没有办法匹配\r(回车return)、\n(换行)、\v(垂直制表符)和\f (换页)以及 Unicode 字符 U+0085(下一行)、U+2028(行分隔符)和 U+2029(段落分隔符)以及我不知道的任何其他字符这可能会导致不止一行?

我正在 .NET 中编写一些验证代码,如果用户提供的输入文本包含多行,这些代码将失败。在大多数情况下,这意味着我只需要检查 \r\n。但是,我知道还有许多其他垂直 whitespace characters.

我知道 .NET regex differs from perl regex,最重要的是,.NET 中的 \v 匹配 "vertical tab",而它匹配 perl 正则表达式中的 "vertical whitespace"。

如果想要匹配任何未知数,只需使用 not set [^ ](至少在 .Net 中,我的 perl 有点模糊)来匹配一个特定的字符。例如,如果我想匹配从一行的当前位置到以字母 D 开头的下一行之间的空格,我将使用此

([^D]+)

因此匹配捕获将包括字母 D 之前的每种类型的空格。

如您所说,Perl 字符 class \v 匹配 [\x0A-\x0D](换行符、垂直制表符、换页符和回车符-return(尽管我对此表示异议CR除了非ASCII码点[\x{2028}\x{2029}](行分隔符和段落分隔符)外,竖白space))。

您可以像这样在 .NET 中手动构建此角色 class

[\u0A-\u0D\u2028\u2029]