1
0
mirror of https://github.com/php/doc-fr.git synced 2026-03-23 22:52:18 +01:00
Files
archived-doc-fr/reference/pcre/pattern.modifiers.xml
2026-03-10 19:04:42 +01:00

242 lines
10 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"?>
<!-- $Revision$ -->
<!-- EN-Revision: b5aa3464c8817645633dc4364e1ac2d7b92c5b3f Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<article xml:id="reference.pcre.pattern.modifiers" xmlns="http://docbook.org/ns/docbook">
<title>Options de recherche</title>
<titleabbrev>Options disponibles pour les expressions régulières</titleabbrev>
<para>
Les options de PCRE sont listées ci-dessous. Les noms entre
parenthèses sont les noms internes à PCRE.
Les espaces et les caractères de nouvelles lignes sont ignorés
dans les modificateurs, les autres caractères causent des erreurs.
</para>
<para>
<blockquote>
<variablelist>
<varlistentry>
<term><emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)</term>
<listitem>
<simpara>
Effectue une recherche insensible à la casse.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>m</emphasis> (<literal>PCRE_MULTILINE</literal>)</term>
<listitem>
<simpara>
Par défaut, PCRE traite la chaîne sujet comme une seule
ligne (même si cette chaîne contient des retours chariot).
Le métacaractère "début de ligne" (^) ne sera
valable qu'une seule fois, au début de la ligne, et le
métacaractère "fin de ligne " ($) ne sera valable
qu'à la fin de la chaîne, ou avant le retour chariot
final (à moins que l'option <emphasis>D</emphasis> ne soit activée).
C'est le même fonctionnement qu'en Perl.
</simpara>
<simpara>
Lorsque cette option est activée, " début de ligne " et
" fin de ligne " correspondront alors aux caractères
suivant et précédent immédiatement un
caractère de nouvelle ligne, en plus du début
et de la fin de la chaîne. C'est le même
fonctionnement que l'option Perl /m. S'il n'y a pas de
caractère de nouvelle ligne "\n" dans la chaîne sujet,
ou s'il n'y a aucune occurrence de ^ ou $ dans le masque, cette option
ne sert à rien.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>s</emphasis> (<literal>PCRE_DOTALL</literal>)</term>
<listitem>
<simpara>
Avec cette option, le métacaractère point (.)
remplace n'importe quel caractère, y compris les nouvelles
lignes. Sans cette option, le caractère point ne remplace
pas les nouvelles lignes. Cette option est équivalente
à l'option Perl /s. Une classe de caractères
négative telle que [^a] acceptera toujours les
caractères de nouvelles lignes, indépendamment
de cette option.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>x</emphasis> (<literal>PCRE_EXTENDED</literal>)</term>
<listitem>
<simpara>
Avec cette option, les caractères d'espacement sont
ignorés, sauf lorsqu'ils sont échappés,
ou à l'intérieur d'une classe de caractères,
et tous les caractères entre # non échappés
et en dehors d'une classe de caractères, et le prochain
caractère de nouvelle ligne sont ignorés. C'est
l'équivalent Perl de l'option /x : elle permet l'ajout
de commentaires dans les masques compliqués. Notez bien,
cependant, que cela ne s'applique qu'aux caractères de
données. Les caractères d'espacement ne doivent
jamais apparaître dans les séquences spéciales
d'un masque, par exemple dans la séquence (?( qui
introduit une parenthèse conditionnelle.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>A</emphasis> (<literal>PCRE_ANCHORED</literal>)</term>
<listitem>
<simpara>
Avec cette option, le masque est ancré de force, c'est-à-dire
que le masque doit s'appliquer juste au début de la chaîne sujet
pour être considéré comme trouvé. Il est possible de réaliser le
même effet en ajoutant les métacaractères adéquats, ce qui est la
seule manière de le faire en Perl.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>D</emphasis> (<literal>PCRE_DOLLAR_ENDONLY</literal>)</term>
<listitem>
<simpara>
Avec cette option, le métacaractère $ ne sera
valable qu'à la fin de la chaîne sujet. Sans
cette option, $ est aussi valable avant une nouvelle ligne,
si cette dernière est le dernier caractère de
la chaîne. Cette option est ignorée si l'option
<emphasis>m</emphasis> est activée. Il n'y a pas
d'équivalent en Perl.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>S</emphasis></term>
<listitem>
<simpara>
Lorsqu'un masque est utilisé plusieurs fois, cela vaut
la peine de passer quelques instants de plus pour l'analyser
et optimiser le code pour accélérer les
traitements ultérieurs. Cette option force cette
analyse plus poussée. Actuellement, cette analyse
n'est utile que pour les masques non ancrés, qui
ne commencent pas par un caractère fixe.
À partir de PHP 7.3.0, ce drapeau n'a plus d'effet.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>U</emphasis> (<literal>PCRE_UNGREEDY</literal>)</term>
<listitem>
<simpara>
Cette option inverse la tendance à la gourmandise des
expressions régulières. Il est aussi possible d'inverser
cette tendance au coup par coup avec un <literal>?</literal> mais
cela rendra gourmande la séquence. Cette option n'est pas compatible
avec Perl. Elle peut aussi être mise dans le masque avec
l'option <literal>(?U)</literal> dans le
<link linkend="regexp.reference.internal-options">pattern</link> ou
par un point d'interrogation avant le quantificateur (e.g. <literal>.*?</literal>).
</simpara>
<note>
<para>
Il n'est généralement pas possible de faire correspondre
plus que la limite de <link
linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link>
caractères en mode non gourmand.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>X</emphasis> (<literal>PCRE_EXTRA</literal>)</term>
<listitem>
<simpara>
Cette option ajoute d'autres fonctionnalités incompatibles
avec le PCRE de Perl. Tous les antislashs suivis d'une lettre qui
n'aurait pas de signification particulière causent une erreur,
permettant la réservation de ces combinaisons pour des ajouts
fonctionnels ultérieurs. Par défaut, comme en Perl, les
antislashs suivis d'une lettre sans signification particulière
sont traités comme des valeurs littérales. Actuellement,
cette option ne déclenche pas d'autres fonctions.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>J</emphasis> (<literal>PCRE_INFO_JCHANGED</literal>)</term>
<listitem>
<simpara>
L'option (?J) interne de configuration modifie l'option locale <literal>PCRE_DUPNAMES</literal>.
Permet la duplication de noms pour les sous-masques.
À partir de PHP 7.2.0, <literal>J</literal> est aussi supporté en tant que modificateur.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>)</term>
<listitem>
<simpara>
Cette option active des fonctionnalités additionnelles de PCRE qui ne sont pas compatibles avec Perl.
La chaîne d'entrée et le masque sont traités comme des chaînes UTF-8.
Une chaîne d'entrée invalide aura pour conséquence une absence de correspondance dans les fonctions preg_*.
Un masque invalide va lever une erreur de niveau <constant>E_WARNING</constant>.
Les séquences UTF-8 de cinq et six octets sont considérées comme invalides.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>n</emphasis> (<literal>PCRE_NO_AUTO_CAPTURE</literal>)</term>
<listitem>
<simpara>
Ce modificateur rend les groupes simples <code>(xyz)</code> non capturants.
Seuls les groupes nommés comme <code>(?&lt;name&gt;xyz)</code> sont capturants.
Cela affecte uniquement les groupes capturants, il est toujours possible
d'utiliser des références de sous-masque numérotées, et le tableau de
correspondances contiendra toujours des résultats numérotés.
Disponible à partir de PHP 8.2.0
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>r</emphasis> (<literal>PCRE2_EXTRA_CASELESS_RESTRICT</literal>)</term>
<listitem>
<simpara>
Lorsque <emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>) et <emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)
sont actifs, ce modificateur empêche la correspondance entre les caractères ASCII et non-ASCII.
</simpara>
<simpara>
Par exemple, <code>preg_match('/\x{212A}/iu', "K")</code> correspond au signe Kelvin <literal></literal> (U+212A).
Lorsque <emphasis>r</emphasis> est utilisé (<code>preg_match('/\x{212A}/iur', "K")</code>), cela ne correspond pas.
</simpara>
<simpara>
Disponible à partir de 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
-->