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

时间:2015-02-26 13:32:40

标签: .net regex perl whitespace multiline

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

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

我知道.NET regex differs from perl regex,最重要的是,.NET中的\v匹配“垂直制表符”,而它匹配perl正则表达式中的“垂直空白”。

2 个答案:

答案 0 :(得分:3)

正如你所说,Perl角色类\v匹配[\x0A-\x0D](换行,垂直制表符,换页和回车(虽然我会质疑CR是垂直空格))除了非ASCII代码点[\x{2028}\x{2029}](行分隔符和段落分隔符)。

您可以像.NET一样在.NET中手工构建此角色类

[\u0A-\u0D\u2028\u2029]

答案 1 :(得分:0)

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

([^D]+)

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