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

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

  • \H
  • \V
  • \N

Эта тема является частью Справочник по регулярному выражению переполнения стека.

17

Решение

\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+ ?Благодаря Авинаш Радж за вопрос.

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

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

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

  • Perl 5.10
  • PCRE 7.2
  • Программисты PHP могут найти несоответствие в том, какие версии поддерживают эти конструкции. Поскольку они пришли из Perl 5, нужно вместо этого установить версию PCRE; Вы можете проверить это используя phpinfo(). По умолчанию PHP 5.2.2 делает.
  • Java 8 java.util.regex.Pattern Поддержка для \H а также \V конструкции были добавлены как часть реализации \h, \v, который был не верно для Java 7, тем не мение \N пока не поддерживается. Протестировано с JDK8u25.
24

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]