Files
archived-doc-pt-br/reference/pcre/pattern.modifiers.xml
2025-01-04 12:01:55 -03:00

231 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"?>
<!-- EN-Revision: b5aa3464c8817645633dc4364e1ac2d7b92c5b3f Maintainer: leonardolara Status: ready --><!-- CREDITS: leonardolara -->
<article xml:id="reference.pcre.pattern.modifiers" xmlns="http://docbook.org/ns/docbook">
<title>Modificadores de Expressão</title>
<titleabbrev>Possíveis modificadores em expressões regulares</titleabbrev>
<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.
</para>
<para>
<blockquote>
<variablelist>
<varlistentry>
<term><emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)</term>
<listitem>
<simpara>
Se este modificador estiver definido, as letras na expressão corresponderão
às letras maiúsculas e minúsculas.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>m</emphasis> (<literal>PCRE_MULTILINE</literal>)</term>
<listitem>
<simpara>
Por padrão, o PCRE trata a string de entrada como
uma única "linha" de caracteres (mesmo que na verdade contenha
vários caracteres de nova linha). O metacaractere "início de linha" (^)
corresponde apenas ao início da string, enquanto que o metacaractere
"fim de linha" ($) corresponde apenas ao final da
string ou antes de um caractere final de nova linha (a menos
que o modificador <emphasis>D</emphasis> esteja definido). O comportamento
é o mesmo no Perl.
</simpara>
<simpara>
Quando este modificador é definido, as construções "início de linha" e
"fim de linha" 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 "\n" em uma
string de entrada ou nenhuma ocorrência de ^ ou $ em uma expressão,
a configuração desse modificador não terá efeito.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>s</emphasis> (<literal>PCRE_DOTALL</literal>)</term>
<listitem>
<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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>x</emphasis> (<literal>PCRE_EXTENDED</literal>)</term>
<listitem>
<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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>A</emphasis> (<literal>PCRE_ANCHORED</literal>)</term>
<listitem>
<simpara>
Se este modificador estiver definido, a expressão é forçada a ser
"ancorada", ou seja, é restrita a corresponder apenas ao
início da string que está sendo pesquisada (a "string
de entrada"). 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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>D</emphasis> (<literal>PCRE_DOLLAR_ENDONLY</literal>)</term>
<listitem>
<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 <emphasis>m</emphasis>
estiver definido. Não há equivalente a este modificador no
Perl.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>S</emphasis></term>
<listitem>
<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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>U</emphasis> (<literal>PCRE_UNGREEDY</literal>)</term>
<listitem>
<simpara>
Este modificador inverte a "ganância" dos quantificadores para
que eles não sejam gananciosos por padrão, mas se tornem gananciosos se
seguidos por <literal>?</literal>. Não é compatível com o Perl. Também pode
ser definido por uma <link linkend="regexp.reference.internal-options">configuração
de modificador dentro da expressão</link>
<literal>(?U)</literal> ou por um ponto de interrogação atrás de um quantificador
(por exemplo, <literal>.*?</literal>).
</simpara>
<note>
<para>
Geralmente não é possível corresponder mais do que <link
linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link>
caracteres no modo não ganancioso.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>X</emphasis> (<literal>PCRE_EXTRA</literal>)</term>
<listitem>
<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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>J</emphasis> (<literal>PCRE_INFO_JCHANGED</literal>)</term>
<listitem>
<simpara>
A configuração de opção interna (?J) altera a opção local <literal>PCRE_DUPNAMES</literal>.
Permite nomes duplicados para sub-expressões.
A partir do PHP 7.2.0, <literal>J</literal> também é suportado como modificador.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>)</term>
<listitem>
<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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>n</emphasis> (<literal>PCRE_NO_AUTO_CAPTURE</literal>)</term>
<listitem>
<simpara>
Este modificador torna grupos <code>(xyz)</code> simples não capturáveis.
Somente grupos nomeados como <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.
</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>)
estão ativos, este modificador evita correspondência entre caracteres ASCII e não-ASCII.
</simpara>
<simpara>
Por exemplo, <code>preg_match('/\x{212A}/iu', "K")</code> corresponde ao símbolo de Kelvin <literal></literal> (U+212A).
Quando <emphasis>r</emphasis> é usado (<code>preg_match('/\x{212A}/iur', "K")</code>), não há correspondência.
</simpara>
<simpara>
Disponível a partir do 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
-->