<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'reference.pcre.pattern.modifiers.php',
    1 => 'Poss&iacute;veis modificadores em express&otilde;es regulares',
    2 => 'Modificadores de Express&atilde;o',
  ),
  'up' => 
  array (
    0 => 'pcre.pattern.php',
    1 => 'Express&otilde;es PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.performance.php',
    1 => 'Desempenho',
  ),
  'next' => 
  array (
    0 => 'reference.pcre.pattern.differences.php',
    1 => 'Diferen&ccedil;as para o Perl',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Modificadores de Expressão</h1>

 
  <p class="para">
   Os possíveis modificadores PCRE atuais estão listados abaixo. Os nomes
   entre parênteses referem-se a nomes PCRE internos para esses modificadores.
   Espaços e novas linhas são ignorados nos modificadores, outros caracteres causam erro.
  </p>
  <p class="para">
   <blockquote class="blockquote">
    <dl>
     
      <dt><em>i</em> (<code class="literal">PCRE_CASELESS</code>)</dt>
      <dd>
       <span class="simpara">
        Se este modificador estiver definido, as letras na expressão corresponderão
        às letras maiúsculas e minúsculas.
       </span>
      </dd>
     
     
      <dt><em>m</em> (<code class="literal">PCRE_MULTILINE</code>)</dt>
      <dd>
       <span class="simpara">
        Por padrão, o PCRE trata a string de entrada como
        uma única &quot;linha&quot; de caracteres (mesmo que na verdade contenha
        vários caracteres de nova linha). O metacaractere &quot;início de linha&quot; (^)
        corresponde apenas ao início da string, enquanto que o metacaractere
        &quot;fim de linha&quot; ($) corresponde apenas ao final da
        string ou antes de um caractere final de nova linha (a menos
        que o modificador <em>D</em> esteja definido). O comportamento
        é o mesmo no Perl.
       </span>
       <span class="simpara">
        Quando este modificador é definido, as construções &quot;início de linha&quot; e
        &quot;fim de linha&quot; correspondem imediatamente após ou imediatamente
        antes de qualquer caractere de nova linha na string de entrada, respectivamente, bem
        como no início e no final. Isso é equivalente ao
        modificador /m do Perl. Se não houver caracteres &quot;\n&quot; em uma
        string de entrada ou nenhuma ocorrência de ^ ou $ em uma expressão,
        a configuração desse modificador não terá efeito.
       </span>
      </dd>
     
     
      <dt><em>s</em> (<code class="literal">PCRE_DOTALL</code>)</dt>
      <dd>
       <span class="simpara">
        Se este modificador estiver definido, um metacaractere de ponto na expressão
        corresponderá a todos os caracteres, incluindo os de nova linha. Sem ele,
        os de nova linha são excluídas. Este modificador é equivalente ao
        modificador /s do Perl. Uma classe negativa como [^a] sempre corresponde a
        um caractere de nova linha, independente da configuração deste
        modificador.
       </span>
      </dd>
     
     
      <dt><em>x</em> (<code class="literal">PCRE_EXTENDED</code>)</dt>
      <dd>
       <span class="simpara">
        Se este modificador estiver definido, os caracteres de espaço em branco de dados na
        expressão serão totalmente ignorados, exceto quando escapados ou dentro de uma
        classe de caracteres, e os caracteres entre um # sem escape
        fora de uma classe de caracteres e o próximo caractere de nova linha,
        inclusive, também serão ignorados. Isto é equivalente ao modificador
        /x do Perl e torna possível incluir comentários dentro de
        padrões complexos. Observe, entretanto, que isso se aplica apenas
        a caracteres de dados. Os caracteres de espaço em branco nunca podem aparecer
        em sequências de caracteres especiais em uma expressão, por exemplo,
        dentro da sequência (?( que introduz uma sub-expressão
        condicional.
       </span>
      </dd>
     
     
      <dt><em>A</em> (<code class="literal">PCRE_ANCHORED</code>)</dt>
      <dd>
       <span class="simpara">
        Se este modificador estiver definido, a expressão é forçada a ser
        &quot;ancorada&quot;, ou seja, é restrita a corresponder apenas ao
        início da string que está sendo pesquisada (a &quot;string
        de entrada&quot;). Este efeito também pode ser alcançado por construções
        apropriadas na própria expressão, que é a única maneira de
        fazer isso em Perl.
       </span>
      </dd>
     
     
      <dt><em>D</em> (<code class="literal">PCRE_DOLLAR_ENDONLY</code>)</dt>
      <dd>
       <span class="simpara">
        Se esse modificador estiver definido, um metacaractere de cifrão na expressão
        corresponderá apenas ao final da string de entrada. Sem esse
        modificador, um cifrão também corresponde imediatamente antes do caractere
        final se for um de nova linha (mas não antes de qualquer outro
        de nova linha). Este modificador é ignorado se o modificador <em>m</em>
        estiver definido. Não há equivalente a este modificador no
        Perl.
       </span>
      </dd>
     
     
      <dt><em>S</em></dt>
      <dd>
       <span class="simpara">
        Quando uma expressão vai ser usada várias vezes, vale a
        pena gastar mais tempo analisando-a para agilizar
        o tempo de correspondência. Se este modificador estiver definido,
        esta análise extra será executada. Atualmente, estudar uma
        expressão é útil apenas para expressões não ancoradas que não
        possuem um caractere inicial único fixo.
        A partir do PHP 7.3.0, este modificador não tem efeito.
       </span>
      </dd>
     
     
      <dt><em>U</em> (<code class="literal">PCRE_UNGREEDY</code>)</dt>
      <dd>
       <span class="simpara">
        Este modificador inverte a &quot;ganância&quot; dos quantificadores para
        que eles não sejam gananciosos por padrão, mas se tornem gananciosos se
        seguidos por <code class="literal">?</code>. Não é compatível com o Perl. Também pode
        ser definido por uma <a href="regexp.reference.internal-options.php" class="link">configuração
        de modificador dentro da expressão</a>
        <code class="literal">(?U)</code> ou por um ponto de interrogação atrás de um quantificador
        (por exemplo, <code class="literal">.*?</code>).
       </span>
       <blockquote class="note"><p><strong class="note">Nota</strong>: 
        <p class="para">
         Geralmente não é possível corresponder mais do que <a href="pcre.configuration.php#ini.pcre.backtrack-limit" class="link">pcre.backtrack_limit</a>
         caracteres no modo não ganancioso.
        </p>
       </p></blockquote>
      </dd>
     
     
      <dt><em>X</em> (<code class="literal">PCRE_EXTRA</code>)</dt>
      <dd>
       <span class="simpara">
        Este modificador ativa funcionalidades adicionais do PCRE que
        são incompatíveis com o Perl. Qualquer barra invertida em uma expressão
        seguida por uma letra sem significado especial causa
        um erro, reservando assim essas combinações para expansão
        futura. Por padrão, como no Perl, uma barra invertida seguida por uma
        letra sem significado especial é tratada como um literal.
        Atualmente não há outras características controladas por este
        modificador.
       </span>
      </dd>
     
     
      <dt><em>J</em> (<code class="literal">PCRE_INFO_JCHANGED</code>)</dt>
      <dd>
       <span class="simpara">
        A configuração de opção interna (?J) altera a opção local <code class="literal">PCRE_DUPNAMES</code>.
        Permite nomes duplicados para sub-expressões.
        A partir do PHP 7.2.0, <code class="literal">J</code> também é suportado como modificador.
       </span>
      </dd>
     
     
      <dt><em>u</em> (<code class="literal">PCRE_UTF8</code>)</dt>
      <dd>
       <span class="simpara">
        Este modificador ativa funcionalidades adicionais do PCRE que
        são incompatíveis com o Perl. As strings de expressão e de entrada são
        tratadas como UTF-8. Uma string de entrada inválida fará com que a função preg_*
        não corresponda a nada; uma expressão inválida irá causar um erro de
        nível E_WARNING. Sequências UTF-8 de cinco e seis octetos são
        consideradas inválidas.
       </span>
      </dd>
     
     
      <dt><em>n</em> (<code class="literal">PCRE_NO_AUTO_CAPTURE</code>)</dt>
      <dd>
       <span class="simpara">
        Este modificador torna grupos <code class="code">(xyz)</code> simples não capturáveis.
        Somente grupos nomeados como <code class="code">(?&lt;nome&gt;xyz)</code> serão capturáveis.
        Isso afeta apenas quais grupos estão sendo capturados, ainda é possível usar
        referências numeradas de sub-expressões e o array de correspondências ainda
        conterá resultados numerados. Disponível a partir do 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>)
        estão ativos, este modificador evita correspondência entre caracteres ASCII e não-ASCII.
       </span>
       <span class="simpara">
        Por exemplo, <code class="code">preg_match(&#039;/\x{212A}/iu&#039;, &quot;K&quot;)</code> corresponde ao símbolo de Kelvin <code class="literal">K</code> (U+212A).
        Quando <em>r</em> é usado (<code class="code">preg_match(&#039;/\x{212A}/iur&#039;, &quot;K&quot;)</code>), não há correspondência.
       </span>
       <span class="simpara">
        Disponível a partir do PHP 8.4.0.
       </span>
      </dd>
     
    </dl>
   </blockquote>
  </p>
</div>
<?php manual_footer($setup); ?>