构造\ H,\ V和\ N是什么意思?

Uni*_*ron 17 php regex pcre java-8

以下结构没有很好的文档记录,但它们的确适用于PHP的特定版本; 这些版本是什么,这些构造是什么以及哪些其他实现支持这个?

  • \H
  • \V
  • \N

该线程是Stack Overflow Regex Reference的一部分.

Uni*_*ron 24

\H匹配任何非水平空格的东西.这包括制表符和所有"空格分隔符"Unicode字符.这与:

[^\h] or
[^\t\p{Zs}]
Run Code Online (Sandbox Code Playgroud)

\V是否为否定类\v- 它被命名为"非垂直空白字符",并且匹配任何不是垂直空格字符的字符,这些字符在Unicode标准中被视为换行符并且将被匹配\v,并且与之相同Perl 5中介绍的以下内容:

[^\v] or
[^\n\cK\f\r\x85\x{2028}\x{2029}]
Run Code Online (Sandbox Code Playgroud)

\N匹配任何不是换行符的字符\n.简单!

[^\n]
Run Code Online (Sandbox Code Playgroud)

\V+和之间有什么区别\N+感谢Avinash Raj提问.

像Perl 5.10的文档中指定,\V是相同的[^\n\cK\f\r\x85\x{2028}\x{2029}],并且不应与任何的\n,\r\f,以及Ctrl+(Control char)(*nix中), 0x85,0x20280x2029.

当您想要匹配水平文本中的所有内容时,这些字符类非常有用且非常有效\V+- 或者只是消耗整个段落\N+- 在各种其他用例中.


以下实现支持\H,\V\N:

  • @AvinashRaj Perl 5.10和PCRE 7.2在2007年6月发布了这个"新功能",其中PHP在2007年11月实现了PCRE 7.2作为默认支持.Java 8在2013年作为"新功能"发布了! (4认同)