Ответ 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
:
- 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.