匹配任何垂直空格的正则表达式
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]
是否有 .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]