<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reference.pcre.pattern.syntax.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.internal-options.php',
    1 => 'Configura&ccedil;&atilde;o de op&ccedil;&otilde;es dentro da express&atilde;o',
    2 => 'Configura&ccedil;&atilde;o de op&ccedil;&otilde;es dentro da express&atilde;o',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Sintaxe das express&otilde;es regulares PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.alternation.php',
    1 => 'Altern&acirc;ncia',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.subpatterns.php',
    1 => 'Sub-express&otilde;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/pcre/pattern.syntax.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="regexp.reference.internal-options" class="section">
  <h2 class="title">Configuração de opções dentro da expressão</h2>
  <p class="para">
   As configurações de <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_CASELESS</a>,
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a>,
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a>,
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_UNGREEDY</a>,
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTRA</a>,
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTENDED</a>
   e PCRE_DUPNAMES podem ser alteradas de dentro da expressão através de
   uma sequência de letras de opção do Perl envolvidas entre &quot;(?&quot; e
   &quot;)&quot;. As letras de opções são:

   <table class="doctable table">
    <caption><strong>Letras de opções internas</strong></caption>
    
     <tbody class="tbody">
      <tr>
       <td><code class="literal">i</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_CASELESS</a></td>
      </tr>

      <tr>
       <td><code class="literal">m</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a></td>
      </tr>

      <tr>
       <td><code class="literal">s</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a></td>
      </tr>

      <tr>
       <td><code class="literal">x</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTENDED</a></td>
      </tr>

      <tr>
       <td><code class="literal">U</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_UNGREEDY</a></td>
      </tr>

      <tr>
       <td><code class="literal">X</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTRA</a>
        (não mais suportada a partir do PHP 7.3.0)</td>
      </tr>

      <tr>
       <td><code class="literal">J</code></td>
       <td>para <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_INFO_JCHANGED</a></td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Por exemplo, (?im) define uma correspondência insensível a maiúsculas/minúsculas, com multi-linhas. Também
   é possível remover estas opções precendendo a letra
   com um hífen, e combinar definição com remoção como em
   (?im-sx), que define <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_CASELESS</a> e
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a>
   enquanto remove <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a> e
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTENDED</a>.
   Se uma letra aparecer tanto antes quanto depois do
   hífen, a opção é removida.
  </p>
  <p class="para">
   Quando uma mudança de opção ocorre no nível mais alto (isto é, não ocorre dentro
   de parênteses de sub-expressão), a mudança se aplica ao restante da
   expressão que se segue. Assim, <code class="literal">/ab(?i)c/</code> corresponde apenas a &quot;abc&quot;
   e &quot;abC&quot;.
  </p>
  <p class="para">
   Se uma mudança de opção ocorre dentro de uma sub-expressão, o efeito
   é diferente. Isto é uma mudança de comportamento no Perl 5.005.
   Uma mudança de opção dentro de uma sub-expressão afeta somente aquela parte
   da sub-expressão que a segue, assim

   <code class="literal">(a(?i)b)c</code>

   corresponde a &quot;abc&quot; e &quot;aBc&quot; e nenhuma outra string (assumindo que <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_CASELESS</a> não seja
   usada). Por este meio, opções podem ser usadas para ter configurações diferentes em
   partes diferentes da sub-expressão. Qualquer mudança feita em uma alternativa
   é carregada nos ramos subsequentes dentro da mesma sub-expressão. Por
   exemplo,

   <code class="literal">(a(?i)b|c)</code>

   corresponde a &quot;ab&quot;, &quot;aB&quot;, &quot;c&quot; e &quot;C&quot;, embora quando corresponde a
   &quot;C&quot;, o primeiro ramo é abandonado antes da definição da opção.
   Isto porque os efeitos de configurações de opções acontecem em
   tempo de compilação. Haveria comportamento muito estranho caso não fosse desta maneira.
  </p>
  <p class="para">
   As opções específicas do PCRE <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_UNGREEDY</a> e
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTRA</a> podem
   ser alteradas da mesma forma que as compatíveis com o Perl,
   usando os caracteres U e X respectivamente. A opção (?X)
   é especial pelo fato de que deve sempre ocorrer na expressão
   antes de qualquer recurso adicional que ela ativa,
   mesmo quando está no nível mais alto. É melhor quando colocada no início.
  </p>
 </div><?php manual_footer($setup); ?>