Следующие конструкции плохо документированы, но они работают с определенными версиями PHP; Каковы эти версии, каковы эти конструкции и какие другие реализации поддерживают это?
\H \V \N Этот поток является частью справочного руководства по переполнению стека .
\H соответствует любому, что не является горизонтальным пробелом. Это включает символ табуляции и все символы «разделитель пространства» Unicode. Это то же самое, что:
[^\h] or [^\t\p{Zs}]
\V является отрицаемым классом \v – он называется "не вертикальным символом пробела" и соответствует любым символам, которые не являются вертикальным символом пробела тех, которые рассматриваются как разрывы строк в стандарте Unicode и будут сопоставляться \v , и такая же, как и в Perl 5:
[^\v] or [^\n\cK\f\r\x85\x{2028}\x{2029}]
\N соответствует любым символам, которые не являются символами \n строки \n . Просто!
[^\n]
\V+ и \N+ ? Спасибо Авинашу Радж за вопрос. Как указано в документации Perl 5.10, \V совпадает с [^\n\cK\f\r\x85\x{2028}\x{2029}] и не должно совпадать с \n , \r или \f , а также Ctrl+(Control char) (* nix), 0x2028 , 0x2028 и 0x2029 .
Эти классы символов удобны и невероятно эффективны, если вы хотите совместить все в горизонтальном тексте – \V+ – или просто потреблять целый абзац – \N+ – среди других других вариантов использования.
Следующие реализации поддерживают \H , \V и \N :
phpinfo() . По умолчанию используется PHP 5.2.2. java.util.regex.Pattern для конструкций \H и \V добавлена как часть реализации \h , \v , что не соответствует действительности для Java 7 , однако \N еще не поддерживается. Протестировано с помощью JDK8u25.