<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reference.pcre.pattern.syntax.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.character-classes.php',
    1 => 'Символьные классы',
    2 => 'Символьные классы',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Синтаксис регулярных выражений',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.dot.php',
    1 => 'Метасимвол точка',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.alternation.php',
    1 => 'Альтернативный выбор',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/pcre/pattern.syntax.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="regexp.reference.character-classes" class="section">
  <h2 class="title">Символьные классы</h2>
  <p class="para">
   Открывающая квадратная скобка объявляет начало символьного класса,
   который завершают квадратной скобкой. Символ «]» не имеет специального
   значения, и если закрывающая квадратная скобка необходима как член
   символьного класса, она должна быть первым символом непосредственно после
   открывающей квадратной скобки (если указан метасимвол «^», то
   непосредственно после него), либо экранироваться обратным слешем.
  </p>
  <p class="para">
   Символьный класс соответствует одиночному символу входной строки;
   символ должен входить в набор символов, который определили в классе,
   если только первый символ в классе не циркумфлекс «^»,
   тогда символ входной строки не должен входить в класс. Если циркумфлекс «^»
   нужен как член класса, проверяют, чтобы он не шёл первым символом в описании класса,
   либо экранируют циркумфлекс обратным слешем.
  </p>
  <p class="para">
   Символьный класс [aeiou], например, соответствует любой гласной букве
   в нижнем регистре, тогда как класс [^aeiou] соответствует любому согласному
   символу нижнего регистра.
   Обратите внимание, что циркумфлекс — просто удобный способ определить символьный
   класс за счёт перечисления тех символов, которые не должны входить в класс.
   Символ начала строки — не утверждение: он по-прежнему использует символ из входной строки
   и завершается ошибкой, если текущий указатель находится в конце строки.
  </p>
  <p class="para">
   При регистронезависимом сопоставлении
   буквы символьного класса соответствует версии символа как в верхнем,
   так и в нижнем регистре. Поэтому символьный класс [aeiou]
   соответствует как букве «A», так и букве «a».
   Аналогично, класс [^aeiou] не соответствует ни «A», ни «a», тогда как в
   регистрозависимом режиме совпадение бы состоялось.
  </p>
  <p class="para">
   Внутри символьного класса у символа перевода строки «\n» нет специального
   значения, независимо от наличия модификаторов
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a> и
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a>.
   Символьные классы, построенные на отрицании, например [^a], всегда
   соответствуют символу перевода строки.
  </p>
  <p class="para">
   Символ минус «-» (дефис) внутри класса используется для задания
   символьного диапазона. Например, [d-m] соответствует любому символу,
   находящемуся между «d» и «m», включая сами символы «d» и «m».
   Если «-» необходим, как член класса,
   он должен находиться в такой позиции, в которой он не может интерпретироваться
   как диапазон (как правило, это первый и последний символ описания класса),
   либо экранироваться при помощи обратного слеша.
  </p>
  <p class="para">
   Недопустимо записывать закрывающую квадратную скобку «]» как границу
   символьного диапазона. Например, парсер интерпретирует шаблон «[W-]46]»
   как символьный класс, который состоит из двух символов: «W» и «-», за которыми
   идёт строка «46]», поэтому шаблон будет соответствовать
   строкам «W46]» или «-46]».
   Чтобы всё же задать символ «]» в описании диапазона, его нужно
   заэкранировать обратным слешем, например, парсер интерпретирует
   шаблон [W-\]46] как символьный класс, который состоит из символьного диапазона
   вместе с двумя последующими символами «4» и «6».
   Такого же результата можно достичь через шестнадцатеричное
   или восьмеричное представление символа «]».
  </p>
  <p class="para">
   Диапазоны символьных классов определяют последовательностью ASCII-символов,
   которые указывают через символ «-». Диапазоны также разрешено определять числами,
   например [\000-\037]. Диапазон будет соответствовать буквам в нижнем и верхнем регистрах,
   если в диапазон включили буквы и установили регистронезависимое сопоставление. Например,
   диапазоны [W-c] и [][\^_`wxyzabc] эквивалентны, парсер сопоставляет символы
   без учёта регистра, а если установлена таблица символов для французской локали «fr»,
   парсер будет сопоставлять символы из диапазона [\xc8-\xcb] ударному «E» в обоих регистрах.
  </p>
  <p class="para">
   Типам символов \d, \D, \s, \S, \w и \W также разрешено присутствовать
   в символьных классах и добавлять символы, которые им соответствуют, в класс.
   Например, класс [\dABCDEF] соответствует
   любой шестнадцатеричной цифре. Символ «^» указывают с типами символов
   в верхнем регистре, чтобы указать более узкий набор символов. Например,
   класс [^\W_] соответствует любой букве или цифре, но не символу подчёркивания.
  </p>
  <p class="para">
   Все небуквенно-цифровые символы, кроме \, -, ^ в начале и символа «]» в конце,
   не относятся к специальным символам в символьном классе, но экранирующий
   слеш перед ними не навредит. Символ конца шаблона — всегда специальный символ
   и должен быть заэкранирован внутри выражения.
  </p>
  <p class="para">
   Язык Perl поддерживает нотацию POSIX для символьных классов. Это включает
   имена в квадратных скобках: <code class="literal">[:</code> и <code class="literal">:]</code>.
   Модуль PCRE также поддерживает эту тип записи. Например, шаблон
   <code class="literal">[01[:alpha:]%]</code> совпадёт с «0», «1», любым алфавитным символом
   или символом «%». Модуль PCRE поддерживает следующие имена классов:
   <table class="doctable table">
    <caption><strong>Символьные классы</strong></caption>
    
     <tbody class="tbody">
      <tr><td><code class="literal">alnum</code></td><td>буквы и цифры</td></tr>

      <tr><td><code class="literal">alpha</code></td><td>буквы</td></tr>

      <tr><td><code class="literal">ascii</code></td><td>символы с кодами 0–127</td></tr>

      <tr><td><code class="literal">blank</code></td><td>только пробел или символ табуляции</td></tr>

      <tr><td><code class="literal">cntrl</code></td><td>управляющие символы</td></tr>

      <tr><td><code class="literal">digit</code></td><td>десятичные цифры (то же самое, что и \d)</td></tr>

      <tr><td><code class="literal">graph</code></td><td>печатные символы, исключая пробел</td></tr>

      <tr><td><code class="literal">lower</code></td><td>строчные буквы</td></tr>

      <tr><td><code class="literal">print</code></td><td>печатные символы, включая пробел</td></tr>

      <tr><td><code class="literal">punct</code></td><td>печатные символы, исключая буквы и цифры</td></tr>

      <tr><td><code class="literal">space</code></td><td>пробельные символы(почти то же самое, что и \s)</td></tr>

      <tr><td><code class="literal">upper</code></td><td>прописные буквы</td></tr>

      <tr><td><code class="literal">word</code></td><td>символы «слова» (то же самое, что и \w)</td></tr>

      <tr><td><code class="literal">xdigit</code></td><td>шестнадцатеричные цифры</td></tr>

     </tbody>
    
   </table>

   Класс пробельных символов (<code class="literal">space</code>) — это горизонтальная табуляция (HT, 9),
   перевод строки (LF, 10), вертикальная табуляция (VT, 11), разрыв страницы (FF, 12),
   возврат каретки (CR, 13) и пробел (32). Учтите, что этот список включает
   вертикальную табуляцию (VT, код 11). Это отличает «space» от <code class="literal">\s</code>,
   который не включает этот символ (для совместимости с Perl).
  </p>
  <p class="para">
   Название <code class="literal">word</code> — это модуль Perl, а <code class="literal">blank</code> —
   модуль GNU, начиная с версии Perl 5.8. Другой модуль Perl —
   отрицание, которое указывается символом <code class="literal">^</code> после
   двоеточия. Например, <code class="literal">[12[:^digit:]]</code> совпадёт с «1», «2»,
   или с любой не-цифрой.
  </p>
  <p class="para">
   В режиме UTF-8 символы со значениями, которые превышают 128, не совпадут ни с одним
   из символьных классов POSIX.
   Начиная с libpcre 8.10 некоторые символьные классы изменили, чтобы
   использовать свойства символов Unicode, в этом случае упомянутое ограничение не применяется.
   Подробнее об этом рассказывает <a href="http://www.pcre.org/pcre.txt" class="link external">&raquo;&nbsp;руководство PCRE(3)</a>.
  </p>
  <p class="para">
   Свойства символов Unicode могут возникнуть внутри символьного класса.
   Они не могут быть частью диапазона. Символ минус (дефис), после символьного
   класс Unicode будет совпадать буквально. Попытка закончить диапазон
   свойством символа Unicode вызовет предупреждение.
  </p>
 </div><?php manual_footer($setup); ?>