以下结构没有很好的文档记录,但它们的确适用于PHP的特定版本;这些版本是什么,这些构造是什么以及哪些其他实现支持这个?
\H
\V
\N
此主题是The Stack Overflow Regex Reference的一部分。
答案 0 :(得分:24)
\H
匹配任何不是水平空格的内容。这包括制表符和所有"空格分隔符" Unicode字符。这与:
[^\h] or
[^\t\p{Zs}]
\V
是\v
的否定类 - 它被命名为"非垂直空白字符"并匹配任何字符,这些字符不是在Unicode标准中被视为换行符的垂直空白字符,并且将与\v
匹配,并且与Perl 5中引入的以下内容相同:< / p>
[^\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+(Control char)
(* nix),0x85
,0x2028
和0x2029
。
当您希望匹配水平文本中的所有内容时,这些角色类非常有用且非常有效 - \V+
- 或仅仅使用整个段落 - \N+
- 以及其他各种用例。
以下实施支持\H
,\V
和\N
:
phpinfo()
进行检查。默认情况下,PHP 5.2.2可以。java.util.regex.Pattern
已添加对\H
和\V
结构的支持,作为实施\h
\v
的一部分,not true for Java 7,但是\N
尚不支持。 Tested with JDK8u25.