1
0
mirror of https://github.com/php/doc-it.git synced 2026-03-24 07:32:12 +01:00
Files
archived-doc-it/reference/pcre/pattern.modifiers.xml
2026-03-03 17:23:42 +01:00

231 lines
11 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 allinizio 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 allinizio 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,
limpostazione 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 dallimpostazione 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 allinterno 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 allinterno di
pattern complessi. Si noti, tuttavia, che ciò si applica solo
ai caratteri di dati. I caratteri di spaziatura non possono mai apparire
allinterno 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 allinizio della stringa
che viene analizzata (la "stringa
soggetto"). Questo effetto può anche essere ottenuto tramite
costrutti appropriati nel pattern stesso, che è lunico 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>
Limpostazione dellopzione interna (?J) modifica lopzione 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>(?&lt;name&gt;xyz)</code> sono catturanti.
Questo influisce solo su quali gruppi sono catturanti, è comunque possibile
utilizzare riferimenti numerati ai sotto-pattern, e larray 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></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
-->