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

2022-08-30 23:24:49

以下构造没有很好的文档记录,但是从PHP开始的特定版本,它们确实有效;这些版本是什么,这些构造是什么,还有哪些其他实现支持这些?

  • \H
  • \V
  • \N

此线程是堆栈溢出正则表达式引用的一部分。


答案 1

\H匹配任何不是水平空格的内容。这包括制表符和所有“空格分隔符”Unicode 字符。这与以下内容相同:

[^\h] or
[^\t\p{Zs}]

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

[^\v] or
[^\n\cK\f\r\x85\x{2028}\x{2029}]

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

[^\n]

\V+ 和 \N+ 有什么区别?感谢Avinash Raj的提问。

根据文档中指定的 Perl 5.10,\V[^\n\cK\f\r\x85\x{2028}\x{2029}] 相同,不应匹配 \n\r\f 以及 Ctrl+(控制字符)(*nix)、0x850x20280x2029中的任何一个

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


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


答案 2

推荐