Что означают конструкции \H,\V и\N?

Следующие конструкции не хорошо документированы, но они работают с определенными версиями PHP; Каковы эти версии, каковы эти конструкции и какие другие реализации поддерживают это?

  • \H
  • \V
  • \N

Этот поток является частью Справочник по переполнению стека.

Ответ 1

\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]

Какая разница между \V+ и \N+? Благодаря Avinash Raj для запроса.

Как указано в документации Perl 5.10, \V совпадает с [^\n\cK\f\r\x85\x{2028}\x{2029}] и не должен соответствовать ни одному из \N " > \f, а также Ctrl+(Control char) (* nix), 0x85, 0x2028 и 0x2029.

Эти классы символов удобны и невероятно эффективны, если вы хотите совместить все в горизонтальном тексте - \V+ - или просто потреблять целый абзац - \N+ - среди других других случаев использования.


Следующие реализации поддерживают \H, \V и \N: