【发布时间】:2015-02-26 13:32:39
【问题描述】:
.NET 是否有一个正则表达式模式可以匹配任何会导致多行的字符,即任何垂直空白字符,就像 perl 正则表达式对\v 所做的那样?换句话说,有没有办法匹配\r(回车)、\n(换行)、\v(垂直制表符)和@987654330@(换页)以及Unicode字符@987654331 @(下一行)、U+2028(行分隔符)和U+2029(段落分隔符)以及我不知道的任何其他字符可能会导致多行?
我正在.NET 中编写一些验证代码,如果用户提供的输入文本包含多于一行,它将失败。在大多数情况下,这意味着我只需要检查\r 和\n。但是,我知道还有很多其他垂直的whitespace characters。
我知道.NET regex differs from perl regex,最重要的是,.NET 中的\v 匹配“垂直选项卡”,而它匹配 perl 正则表达式中的“垂直空白”。
【问题讨论】:
-
re 类上的 perl docs 声称 perl 正则表达式引擎在
\v上的行为符合预期(我没有根据经验进行检查)。 -
您使用的是什么正则表达式方言?您的编程语言(和版本)是什么? perl 的
\v对你有用吗? (有关该类别的字符列表,请参阅stackoverflow.com/questions/12290224/…。) -
根据Unicode character property for whitespace cited on Wikipedia,@ChristopherCreutzig 评论中链接后面的列表是详尽的(\x0a-\x0d,\x85,u+2028,u+2029)。
-
您可以在 Perl 中使用
\R代表通用换行符。
标签: .net regex perl whitespace multiline