<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'reference.pcre.pattern.modifiers.php',
    1 => 'Options disponibles pour les expressions r&eacute;guli&egrave;res',
    2 => 'Options de recherche',
  ),
  'up' => 
  array (
    0 => 'pcre.pattern.php',
    1 => 'Masques PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.performance.php',
    1 => 'Performance',
  ),
  'next' => 
  array (
    0 => 'reference.pcre.pattern.differences.php',
    1 => 'Diff&eacute;rences avec Perl',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Options de recherche</h1>

 
  <p class="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.
  </p>
  <p class="para">
   <blockquote class="blockquote">
    <dl>
     
      <dt><em>i</em> (<code class="literal">PCRE_CASELESS</code>)</dt>
      <dd>
       <span class="simpara">
        Effectue une recherche insensible à la casse.
       </span>
      </dd>
     
     
      <dt><em>m</em> (<code class="literal">PCRE_MULTILINE</code>)</dt>
      <dd>
       <span class="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 &quot;début de ligne&quot; (^) ne sera
        valable qu&#039;une seule fois, au début de la ligne, et le
        métacaractère &quot;fin de ligne &quot; ($) ne sera valable
        qu&#039;à la fin de la chaîne, ou avant le retour chariot
        final (à moins que l&#039;option <em>D</em> ne soit activée).
        C&#039;est le même fonctionnement qu&#039;en Perl.
       </span>
       <span class="simpara">
        Lorsque cette option est activée, &quot; début de ligne &quot; et
        &quot; fin de ligne &quot; 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&#039;est le même
        fonctionnement que l&#039;option Perl /m. S&#039;il n&#039;y a pas de
        caractère de nouvelle ligne &quot;\n&quot; dans la chaîne sujet,
        ou s&#039;il n&#039;y a aucune occurrence de ^ ou $ dans le masque, cette option
        ne sert à rien.
       </span>
      </dd>
     
     
      <dt><em>s</em> (<code class="literal">PCRE_DOTALL</code>)</dt>
      <dd>
       <span class="simpara">
        Avec cette option, le métacaractère point (.)
        remplace n&#039;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&#039;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.
       </span>
      </dd>
     
     
      <dt><em>x</em> (<code class="literal">PCRE_EXTENDED</code>)</dt>
      <dd>
       <span class="simpara">
        Avec cette option, les caractères d&#039;espacement sont
        ignorés, sauf lorsqu&#039;ils sont échappés,
        ou à l&#039;intérieur d&#039;une classe de caractères,
        et tous les caractères entre # non échappés
        et en dehors d&#039;une classe de caractères, et le prochain
        caractère de nouvelle ligne sont ignorés. C&#039;est
        l&#039;équivalent Perl de l&#039;option /x : elle permet l&#039;ajout
        de commentaires dans les masques compliqués. Il est à noter,
        cependant, que cela ne s&#039;applique qu&#039;aux caractères de
        données. Les caractères d&#039;espacement ne doivent
        jamais apparaître dans les séquences spéciales
        d&#039;un masque, par exemple dans la séquence (?( qui
        introduit une parenthèse conditionnelle.
       </span>
      </dd>
     
     
      <dt><em>A</em> (<code class="literal">PCRE_ANCHORED</code>)</dt>
      <dd>
       <span class="simpara">
        Avec cette option, le masque est ancré de force, c&#039;est-à-dire
        que le masque doit s&#039;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.
       </span>
      </dd>
     
     
      <dt><em>D</em> (<code class="literal">PCRE_DOLLAR_ENDONLY</code>)</dt>
      <dd>
       <span class="simpara">
        Avec cette option, le métacaractère $ ne sera
        valable qu&#039;à 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&#039;option
        <em>m</em> est activée. Il n&#039;y a pas
        d&#039;équivalent en Perl.
       </span>
      </dd>
     
     
      <dt><em>S</em></dt>
      <dd>
       <span class="simpara">
        Lorsqu&#039;un masque est utilisé plusieurs fois, cela vaut
        la peine de passer quelques instants de plus pour l&#039;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&#039;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&#039;a plus d&#039;effet.
       </span>
      </dd>
     
     
      <dt><em>U</em> (<code class="literal">PCRE_UNGREEDY</code>)</dt>
      <dd>
       <span class="simpara">
        Cette option inverse la tendance à la gourmandise des
        expressions régulières. Il est aussi possible d&#039;inverser
        cette tendance au coup par coup avec un <code class="literal">?</code> mais
        cela rendra gourmande la séquence. Cette option n&#039;est pas compatible
        avec Perl. Elle peut aussi être mise dans le masque avec
        l&#039;option <code class="literal">(?U)</code> dans le
        <a href="regexp.reference.internal-options.php" class="link">pattern</a> ou
        par un point d&#039;interrogation avant le quantificateur (e.g. <code class="literal">.*?</code>).
       </span>
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         Il n&#039;est généralement pas possible de faire correspondre
         plus que la limite de <a href="pcre.configuration.php#ini.pcre.backtrack-limit" class="link">pcre.backtrack_limit</a>
         caractères en mode non gourmand.
        </p>
       </p></blockquote>
      </dd>
     
     
      <dt><em>X</em> (<code class="literal">PCRE_EXTRA</code>)</dt>
      <dd>
       <span class="simpara">
        Cette option ajoute d&#039;autres fonctionnalités incompatibles
        avec le PCRE de Perl. Tous les antislashs suivis d&#039;une lettre qui
        n&#039;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&#039;une lettre sans signification particulière
        sont traités comme des valeurs littérales. Actuellement,
        cette option ne déclenche pas d&#039;autres fonctions.
       </span>
      </dd>
     
     
      <dt><em>J</em> (<code class="literal">PCRE_INFO_JCHANGED</code>)</dt>
      <dd>
       <span class="simpara">
        L&#039;option (?J) interne de configuration modifie l&#039;option locale <code class="literal">PCRE_DUPNAMES</code>.
        Permet la duplication de noms pour les sous-masques.
        À partir de PHP 7.2.0, <code class="literal">J</code> est aussi supporté en tant que modificateur.
       </span>
      </dd>
     
     
      <dt><em>u</em> (<code class="literal">PCRE_UTF8</code>)</dt>
      <dd>
       <span class="simpara">
        Cette option active des fonctionnalités additionnelles de PCRE qui ne sont pas compatibles avec Perl.
        La chaîne d&#039;entrée et le masque sont traités comme des chaînes UTF-8.
        Une chaîne d&#039;entrée invalide aura pour conséquence une absence de correspondance dans les fonctions preg_*.
        Un masque invalide va lever une erreur de niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
        Les séquences UTF-8 de cinq et six octets sont considérées comme invalides.
       </span>
      </dd>
     
     
      <dt><em>n</em> (<code class="literal">PCRE_NO_AUTO_CAPTURE</code>)</dt>
      <dd>
       <span class="simpara">
        Ce modificateur rend les groupes simples <code class="code">(xyz)</code> non capturants.
        Seuls les groupes nommés comme <code class="code">(?&lt;name&gt;xyz)</code> sont capturants.
        Cela affecte uniquement les groupes capturants, il est toujours possible
        d&#039;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
       </span>
      </dd>
     
     
      <dt><em>r</em> (<code class="literal">PCRE2_EXTRA_CASELESS_RESTRICT</code>)</dt>
      <dd>
       <span class="simpara">
        Lorsque <em>u</em> (<code class="literal">PCRE_UTF8</code>) et <em>i</em> (<code class="literal">PCRE_CASELESS</code>)
        sont actifs, ce modificateur empêche la correspondance entre les caractères ASCII et non-ASCII.
       </span>
       <span class="simpara">
        Par exemple, <code class="code">preg_match(&#039;/\x{212A}/iu&#039;, &quot;K&quot;)</code> correspond au signe Kelvin <code class="literal">K</code> (U+212A).
        Lorsque <em>r</em> est utilisé (<code class="code">preg_match(&#039;/\x{212A}/iur&#039;, &quot;K&quot;)</code>), cela ne correspond pas.
       </span>
       <span class="simpara">
        Disponible à partir de PHP 8.4.0.
       </span>
      </dd>
     
    </dl>
   </blockquote>
  </p>
</div>
<?php manual_footer($setup); ?>