<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/pcre.pattern.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'it',
  ),
  'this' => 
  array (
    0 => 'reference.pcre.pattern.modifiers.php',
    1 => 'Possibili modificatori nei pattern regex',
    2 => 'Modificatori di Pattern',
  ),
  'up' => 
  array (
    0 => 'pcre.pattern.php',
    1 => 'Pattern PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.performance.php',
    1 => 'Performance',
  ),
  'next' => 
  array (
    0 => 'reference.pcre.pattern.differences.php',
    1 => 'Differenze rispetto a Perl',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    'path' => 'reference/pcre/pattern.modifiers.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="reference.pcre.pattern.modifiers" class="article">
  <h1 class="title">Modificatori di Pattern</h1>

  
  <p class="para">
    I possibili modificatori PCRE attualmente disponibili sono elencati di seguito. I nomi
    tra parentesi si riferiscono ai nomi interni PCRE per questi modificatori.
    Spazi e nuove righe sono ignorati nei modificatori, altri caratteri causano errore.
  </p>
  <p class="para">
    <blockquote class="blockquote">
      <dl>
        
          <dt><em>i</em> (<code class="literal">PCRE_CASELESS</code>)</dt>
          <dd>
            <span class="simpara">
              Se questo modificatore è impostato, le lettere nel pattern corrispondono sia
              a lettere maiuscole sia minuscole.
            </span>
          </dd>
        
        
          <dt><em>m</em> (<code class="literal">PCRE_MULTILINE</code>)</dt>
          <dd>
            <span class="simpara">
              Per impostazione predefinita, PCRE tratta la stringa soggetto come composta da una
              singola &quot;riga&quot; di caratteri (anche se in realtà contiene
              diverse nuove righe). Il metacarattere &quot;inizio riga&quot; (^)
              corrisponde solo all’inizio della stringa, mentre il metacarattere &quot;fine
              riga&quot; ($) corrisponde solo alla fine della
              stringa, oppure prima di una nuova riga finale (a meno che
              il modificatore <em>D</em> non sia impostato). Questo è lo stesso comportamento di
              Perl.
            </span>
            <span class="simpara">
              Quando questo modificatore è impostato, i costrutti &quot;inizio riga&quot; e &quot;fine
              riga&quot; corrispondono rispettivamente subito dopo o subito
              prima di qualsiasi nuova riga nella stringa soggetto,
              oltre che all’inizio e alla fine assoluti. Questo è equivalente al
              modificatore /m di Perl. Se non ci sono caratteri &quot;\n&quot; in una
              stringa soggetto, oppure non ci sono occorrenze di ^ o $ in un pattern,
              l’impostazione di questo modificatore non ha effetto.
            </span>
          </dd>
        
        
          <dt><em>s</em> (<code class="literal">PCRE_DOTALL</code>)</dt>
          <dd>
            <span class="simpara">
              Se questo modificatore è impostato, un metacarattere punto nel pattern
              corrisponde a tutti i caratteri, incluse le nuove righe. Senza di esso,
              le nuove righe sono escluse. Questo modificatore è equivalente al
              modificatore /s di Perl.  Una classe negativa come [^a] corrisponde sempre a un
              carattere di nuova riga, indipendentemente dall’impostazione di questo
              modificatore.
            </span>
          </dd>
        
        
          <dt><em>x</em> (<code class="literal">PCRE_EXTENDED</code>)</dt>
          <dd>
            <span class="simpara">
              Se questo modificatore è impostato, i caratteri di spaziatura nel
              pattern sono completamente ignorati tranne quando preceduti da escape o all’interno di una
              classe di caratteri, e anche i caratteri tra un # non preceduto da escape
              fuori da una classe di caratteri e il carattere di nuova riga successivo,
              incluso, sono ignorati. Questo è equivalente al modificatore /x di Perl,
              e rende possibile includere commenti all’interno di
              pattern complessi. Si noti, tuttavia, che ciò si applica solo
              ai caratteri di dati. I caratteri di spaziatura non possono mai apparire
              all’interno di sequenze di caratteri speciali in un pattern, per esempio
              nella sequenza (?( che introduce un sotto-pattern
              condizionale.
            </span>
          </dd>
        
        
          <dt><em>A</em> (<code class="literal">PCRE_ANCHORED</code>)</dt>
          <dd>
            <span class="simpara">
              Se questo modificatore è impostato, il pattern è forzato a essere
              &quot;ancorato&quot;, cioè è vincolato a corrispondere solo all’inizio della stringa
              che viene analizzata (la &quot;stringa
              soggetto&quot;). Questo effetto può anche essere ottenuto tramite
              costrutti appropriati nel pattern stesso, che è l’unico modo per
              farlo in Perl.
            </span>
          </dd>
        
        
          <dt><em>D</em> (<code class="literal">PCRE_DOLLAR_ENDONLY</code>)</dt>
          <dd>
            <span class="simpara">
              Se questo modificatore è impostato, un metacarattere dollaro nel pattern
              corrisponde solo alla fine della stringa soggetto. Senza questo
              modificatore, il dollaro corrisponde anche immediatamente prima del carattere finale
              se è una nuova riga (ma non prima di altre
              nuove righe). Questo modificatore è ignorato se il modificatore <em>m</em>
              è impostato. Non esiste un equivalente di questo modificatore in
              Perl.
            </span>
          </dd>
        
        
          <dt><em>S</em></dt>
          <dd>
            <span class="simpara">
              Quando un pattern deve essere utilizzato più volte, vale la pena
              dedicare più tempo ad analizzarlo per velocizzare
              il tempo necessario alla corrispondenza. Se questo modificatore è impostato, allora
              viene eseguita questa analisi aggiuntiva. Attualmente, lo studio di un
              pattern è utile solo per pattern non ancorati che non
              hanno un singolo carattere iniziale fisso.
              A partire da PHP 7.3.0 questo flag non ha alcun effetto.
            </span>
          </dd>
        
        
          <dt><em>U</em> (<code class="literal">PCRE_UNGREEDY</code>)</dt>
          <dd>
            <span class="simpara">
              Questo modificatore inverte la &quot;avidità&quot; dei quantificatori in modo
              che non siano avidi per impostazione predefinita, ma diventino avidi se
              seguiti da <code class="literal">?</code>. Non è compatibile con Perl. Può anche
              essere impostato con un
              <a href="regexp.reference.internal-options.php" class="link">modificatore interno nel
              pattern</a> <code class="literal">(?U)</code> oppure con un punto interrogativo dopo un quantificatore (ad esempio
              <code class="literal">.*?</code>).
            </span>
            <blockquote class="note"><p><strong class="note">Nota</strong>: 
              <p class="para">
                Di solito non è possibile corrispondere a più di
                <a href="pcre.configuration.php#ini.pcre.backtrack-limit" class="link">pcre.backtrack_limit</a>
                caratteri in modalità non avida.
              </p>
            </p></blockquote>
          </dd>
        
        
          <dt><em>X</em> (<code class="literal">PCRE_EXTRA</code>)</dt>
          <dd>
            <span class="simpara">
              Questo modificatore attiva funzionalità aggiuntive di PCRE che
              sono incompatibili con Perl. Qualsiasi barra rovesciata in un pattern che
              è seguita da una lettera che non ha significato speciale provoca
              un errore, riservando così queste combinazioni per future
              estensioni. Per impostazione predefinita, come in Perl, una barra rovesciata seguita da una
              lettera senza significato speciale è trattata come letterale.
              Attualmente non esistono altre funzionalità controllate da questo
              modificatore.
            </span>
          </dd>
        
        
          <dt><em>J</em> (<code class="literal">PCRE_INFO_JCHANGED</code>)</dt>
          <dd>
            <span class="simpara">
              L’impostazione dell’opzione interna (?J) modifica l’opzione locale
              <code class="literal">PCRE_DUPNAMES</code>. Consente nomi duplicati per i sotto-pattern.
              A partire da PHP 7.2.0 <code class="literal">J</code> è supportata anche come modificatore.
            </span>
          </dd>
        
        
          <dt><em>u</em> (<code class="literal">PCRE_UTF8</code>)</dt>
          <dd>
            <span class="simpara">
              Questo modificatore attiva funzionalità aggiuntive di PCRE che
              sono incompatibili con Perl. Pattern e stringhe soggetto sono
              trattati come UTF-8. Un soggetto non valido farà sì che la funzione preg_* non
              trovi alcuna corrispondenza; un pattern non valido genererà un errore di
              livello E_WARNING. Sequenze UTF-8 di cinque e sei ottetti sono
              considerate non valide.
            </span>
          </dd>
        
        
          <dt><em>n</em> (<code class="literal">PCRE_NO_AUTO_CAPTURE</code>)</dt>
          <dd>
            <span class="simpara">
              Questo modificatore rende non catturanti i gruppi semplici <code class="code">(xyz)</code>.
              Solo i gruppi nominati come <code class="code">(?&lt;name&gt;xyz)</code> sono catturanti.
              Questo influisce solo su quali gruppi sono catturanti, è comunque possibile
              utilizzare riferimenti numerati ai sotto-pattern, e l’array delle occorrenze conterrà comunque
              risultati numerati. Disponibile a partire da PHP 8.2.0.
            </span>
          </dd>
        
        
          <dt><em>r</em> (<code class="literal">PCRE2_EXTRA_CASELESS_RESTRICT</code>)</dt>
          <dd>
            <span class="simpara">
              Quando <em>u</em> (<code class="literal">PCRE_UTF8</code>) e <em>i</em> (<code class="literal">PCRE_CASELESS</code>)
              sono attivi, questo modificatore impedisce la corrispondenza tra caratteri ASCII e non ASCII.
            </span>
            <span class="simpara">
              Per esempio, <code class="code">preg_match(&#039;/\x{212A}/iu&#039;, &quot;K&quot;)</code> corrisponde al segno Kelvin <code class="literal">K</code> (U+212A).
              Quando si utilizza <em>r</em> (<code class="code">preg_match(&#039;/\x{212A}/iur&#039;, &quot;K&quot;)</code>), non vi è corrispondenza.
            </span>
            <span class="simpara">
              Disponibile a partire da PHP 8.4.0.
            </span>
          </dd>
        
      </dl>
    </blockquote>
  </p>
</div>
<?php manual_footer($setup); ?>