mirror of
https://github.com/php/doc-it.git
synced 2026-03-24 07:32:12 +01:00
231 lines
11 KiB
XML
231 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: b5aa3464c8817645633dc4364e1ac2d7b92c5b3f Maintainer: pastore Status: ready -->
|
||
<!-- CREDITS: darvina -->
|
||
<article xml:id="reference.pcre.pattern.modifiers" xmlns="http://docbook.org/ns/docbook">
|
||
<title>Modificatori di Pattern</title>
|
||
<titleabbrev>Possibili modificatori nei pattern regex</titleabbrev>
|
||
<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.
|
||
</para>
|
||
<para>
|
||
<blockquote>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Se questo modificatore è impostato, le lettere nel pattern corrispondono sia
|
||
a lettere maiuscole sia minuscole.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>m</emphasis> (<literal>PCRE_MULTILINE</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Per impostazione predefinita, PCRE tratta la stringa soggetto come composta da una
|
||
singola "riga" di caratteri (anche se in realtà contiene
|
||
diverse nuove righe). Il metacarattere "inizio riga" (^)
|
||
corrisponde solo all’inizio della stringa, mentre il metacarattere "fine
|
||
riga" ($) corrisponde solo alla fine della
|
||
stringa, oppure prima di una nuova riga finale (a meno che
|
||
il modificatore <emphasis>D</emphasis> non sia impostato). Questo è lo stesso comportamento di
|
||
Perl.
|
||
</simpara>
|
||
<simpara>
|
||
Quando questo modificatore è impostato, i costrutti "inizio riga" e "fine
|
||
riga" 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 "\n" in una
|
||
stringa soggetto, oppure non ci sono occorrenze di ^ o $ in un pattern,
|
||
l’impostazione di questo modificatore non ha effetto.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>s</emphasis> (<literal>PCRE_DOTALL</literal>)</term>
|
||
<listitem>
|
||
<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.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>x</emphasis> (<literal>PCRE_EXTENDED</literal>)</term>
|
||
<listitem>
|
||
<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.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>A</emphasis> (<literal>PCRE_ANCHORED</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Se questo modificatore è impostato, il pattern è forzato a essere
|
||
"ancorato", cioè è vincolato a corrispondere solo all’inizio della stringa
|
||
che viene analizzata (la "stringa
|
||
soggetto"). Questo effetto può anche essere ottenuto tramite
|
||
costrutti appropriati nel pattern stesso, che è l’unico modo per
|
||
farlo in Perl.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>D</emphasis> (<literal>PCRE_DOLLAR_ENDONLY</literal>)</term>
|
||
<listitem>
|
||
<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 <emphasis>m</emphasis>
|
||
è impostato. Non esiste un equivalente di questo modificatore in
|
||
Perl.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>S</emphasis></term>
|
||
<listitem>
|
||
<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.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>U</emphasis> (<literal>PCRE_UNGREEDY</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Questo modificatore inverte la "avidità" dei quantificatori in modo
|
||
che non siano avidi per impostazione predefinita, ma diventino avidi se
|
||
seguiti da <literal>?</literal>. Non è compatibile con Perl. Può anche
|
||
essere impostato con un
|
||
<link linkend="regexp.reference.internal-options">modificatore interno nel
|
||
pattern</link> <literal>(?U)</literal> oppure con un punto interrogativo dopo un quantificatore (ad esempio
|
||
<literal>.*?</literal>).
|
||
</simpara>
|
||
<note>
|
||
<para>
|
||
Di solito non è possibile corrispondere a più di
|
||
<link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link>
|
||
caratteri in modalità non avida.
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>X</emphasis> (<literal>PCRE_EXTRA</literal>)</term>
|
||
<listitem>
|
||
<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.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>J</emphasis> (<literal>PCRE_INFO_JCHANGED</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
L’impostazione dell’opzione interna (?J) modifica l’opzione locale
|
||
<literal>PCRE_DUPNAMES</literal>. Consente nomi duplicati per i sotto-pattern.
|
||
A partire da PHP 7.2.0 <literal>J</literal> è supportata anche come modificatore.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>)</term>
|
||
<listitem>
|
||
<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.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>n</emphasis> (<literal>PCRE_NO_AUTO_CAPTURE</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Questo modificatore rende non catturanti i gruppi semplici <code>(xyz)</code>.
|
||
Solo i gruppi nominati come <code>(?<name>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.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>r</emphasis> (<literal>PCRE2_EXTRA_CASELESS_RESTRICT</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Quando <emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>) e <emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)
|
||
sono attivi, questo modificatore impedisce la corrispondenza tra caratteri ASCII e non ASCII.
|
||
</simpara>
|
||
<simpara>
|
||
Per esempio, <code>preg_match('/\x{212A}/iu', "K")</code> corrisponde al segno Kelvin <literal>K</literal> (U+212A).
|
||
Quando si utilizza <emphasis>r</emphasis> (<code>preg_match('/\x{212A}/iur', "K")</code>), non vi è corrispondenza.
|
||
</simpara>
|
||
<simpara>
|
||
Disponibile a partire da PHP 8.4.0.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</blockquote>
|
||
</para>
|
||
</article>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
--> |