<?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 => 'it',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.character-classes.php',
    1 => 'Classi di caratteri',
    2 => 'Classi di caratteri',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Sintassi delle regex PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.dot.php',
    1 => 'Punto',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.alternation.php',
    1 => 'Alternation',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    '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">Classi di caratteri</h2>
  <p class="para">
   Un parentesi quadrata aperta &quot;[&quot; inizia una classe di caratteri; una parentesi quadrata
   chiusa &quot;]&quot; termina la definizione della classe. Di suo il carattere di parentesi
   quadrata chiusa non ha significati speciali. Se occorre inserire la parentesi
   chiusa all&#039;interno di una classe di caratteri, questa deve
   essere la prima lettera (ovviamente deve seguire il carattere &quot;^&quot;,
   se presente) oppure deve essere preceduta dal carattere di escape &quot;\&quot;.
  </p>
  <p class="para">
   Una classe di caratteri identifica un singolo carattere nella stringa
   oggetto di ricerca; il carattere deve comparire nel set di caratteri definito
   dalla classe, a meno che il primo carattere della classe non sia l&#039;accento
   circonflesso &quot;^&quot;, in tal caso il carattere non deve essere nel set definito
   dalla classe. Se è richiesto l&#039;inserimento del carattere &quot;^&quot; nel set definito
   dalla classe, questo non deve essere la prima lettera dopo la parentesi di
   apertura, oppure deve essere preceduto dal carattere di escape (\).
  </p>
  <p class="para">
   Ad esempio, la classe [aeiou] identifica ogni vocale minuscola,
   mentre [^aeiou] identifica tutti i caratteri che non siano
   delle vocali minuscole. Occorre notare che il simbolo &quot;^&quot; è
   un modo pratico per indicare i caratteri che sono nella
   classe, citando quelli che non lo sono. Questa non è una
   asserzione: consuma un carattere della stringa oggetto
   di ricerca e fallisce se ci si trova alla fine
   del testo.
  </p>
  <p class="para">
   In un riconoscimento senza distinzione tra minuscole e maiuscole,
   ogni lettera della classe identifica sia la versione maiuscola
   sia la minuscola. Così, ad esempio, la classe [aeiou] identifica
   sia &quot;A&quot; sia &quot;a&quot;, e, in questo caso, [^aeiou] non identifica &quot;A&quot;,
   mentre con la distinzione delle maiuscole [^aeiou] identifica la lettera &quot;A&quot;.
  </p>
  <p class="para">
   Il carattere di &quot;a capo&quot; (newline) non viene trattato in
   modo speciale nelle classi di caratteri, indipendentemente
   dalle opzioni <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a> 
   o <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a>.
   La classe [^a] riconosce sempre il carattere &quot;a capo&quot;.
  </p>
  <p class="para">
   Il segno meno (-) può essere usato per definire un intervallo
   all&#039;interno della classe. Ad esempio, [d-m] identifica ogni
   lettera compresa tra d ed m inclusi. Se occorre inserire il segno
   meno (-) come carattere da riconoscere o lo si fa precedere dal carattere
   di escape (\), oppure lo si mette in una posizione tale che non possa essere
   identificato come definizione di un intervallo (ad esempio all&#039;inizio o alla fine
   della definizione della classe).
  </p>
  <p class="para">
   Non è possibile usare il carattere &quot;]&quot; come limite di un
   intervallo. Un criterio definito come [W-]46], viene inteso
   come una classe di due caratteri (W e -) seguita dalla stringa
   46], in tal modo sarebbero riconosciuti i testi &quot;W46]&quot; oppure &quot;-46]&quot;.
   Quindi è necessario precedere la lettera &quot;]&quot; con il carattere di
   escape (\), in questo modo [W-\]46], viene interpretata
   correttamente come una singola classe contenente un range seguito
   da due caratteri separati. In alternativa, per delimitare l&#039;intervallo
   si può utilizzare la notazione ottale di &quot;]&quot;.
  </p>
  <p class="para">
   Gli intervalli utilizzano la sequenza di caratteri ASCII. Inoltre possono
   essere utilizzati per definire caratteri con specifica numerica
   (ad esempio [\000-\037]). Nei casi in cui si abiliti il riconoscimento
   senza distinzione tra lettere maiuscole e minuscole, gli intervalli comprendenti
   lettere identificano sia la lettera maiuscola che minuscola. Ad esempio, [W-c] è equivalente a
   [][\^_`wxyzabc] (con il riconoscimento a prescindere dalla lettera maiuscole e minuscole), e, se
   si utilizza la tabella dei caratteri locali francesi &quot;fr&quot;, [\xc8-\xcb] identifica
   la lettera &quot;e&quot; accentata sia maiuscola sia minuscola.
  </p>
  <p class="para">
   Nelle classi di caratteri si possono utilizzare le sequenze
   \d, \D, \s, \S,  \w e \W per aggiungere altri tipi di caratteri
   alla classe. Ad esempio, [\dABCDEF] riconosce qualsiasi cifra
   esadecimale. Il carattere &quot;^&quot; può essere utilizzato con i caratteri
   maiuscoli per indicare un set di caratteri più ristretto
   che l&#039;identificazione del set di caratteri minuscoli. Ad
   esempio, la classe [^\W_] identifica qualsiasi lettera o cifra
   ma non il trattino basso (_).
  </p>
  <p class="para">
   Tutti i caratteri non alfabetici, eccetto \,  -,  ^ (posto
   all&#039;inizio) e ] non sono speciali per la classi di caratteri,
   e non sono dannosi se preceduti dal caratteri di escape (\). Il terminatore
   di criterio è sempre speciale e deve essere preceduto da \ quando usato
   all&#039;interno di un&#039;espressione.
  </p>
  <p class="para">
   Perl supports the POSIX notation for character classes. This uses names
   enclosed by <code class="literal">[:</code> and <code class="literal">:]</code> within the enclosing square brackets. PCRE also
   supports this notation. For example, <code class="literal">[01[:alpha:]%]</code>
   matches &quot;0&quot;, &quot;1&quot;, any alphabetic character, or &quot;%&quot;. The supported class
   names are:
   <table class="doctable table">
    <caption><strong>Character classes</strong></caption>
    
     <tbody class="tbody">
      <tr><td><code class="literal">alnum</code></td><td>letters and digits</td></tr>

      <tr><td><code class="literal">alpha</code></td><td>letters</td></tr>

      <tr><td><code class="literal">ascii</code></td><td>character codes 0 - 127</td></tr>

      <tr><td><code class="literal">blank</code></td><td>space or tab only</td></tr>

      <tr><td><code class="literal">cntrl</code></td><td>control characters</td></tr>

      <tr><td><code class="literal">digit</code></td><td>decimal digits (same as \d)</td></tr>

      <tr><td><code class="literal">graph</code></td><td>printing characters, excluding space</td></tr>

      <tr><td><code class="literal">lower</code></td><td>lower case letters</td></tr>

      <tr><td><code class="literal">print</code></td><td>printing characters, including space</td></tr>

      <tr><td><code class="literal">punct</code></td><td>printing characters, excluding letters and digits</td></tr>

      <tr><td><code class="literal">space</code></td><td>white space (not quite the same as \s)</td></tr>

      <tr><td><code class="literal">upper</code></td><td>upper case letters</td></tr>

      <tr><td><code class="literal">word</code></td><td>&quot;word&quot; characters (same as \w)</td></tr>

      <tr><td><code class="literal">xdigit</code></td><td>hexadecimal digits</td></tr>

     </tbody>
    
   </table>

   The <code class="literal">space</code> characters are HT (9), LF (10), VT (11), FF (12), CR (13),
   and space (32). Notice that this list includes the VT character (code
   11). This makes &quot;space&quot; different to <code class="literal">\s</code>, which does not include VT (for
   Perl compatibility).
  </p>
  <p class="para">
   The name <code class="literal">word</code> is a Perl extension, and <code class="literal">blank</code> is a GNU extension
   from Perl 5.8. Another Perl extension is negation, which is indicated
   by a <code class="literal">^</code> character after the colon. For example,
   <code class="literal">[12[:^digit:]]</code> matches &quot;1&quot;, &quot;2&quot;, or any non-digit.
  </p>
  <p class="para">
   In UTF-8 mode, characters with values greater than 128 do not match any
   of the POSIX character classes.
  </p>
 </div><?php manual_footer($setup); ?>