diff options
Diffstat (limited to 'tde-i18n-pt_BR/docs/kdebase/kate/regular-expressions.docbook')
-rw-r--r-- | tde-i18n-pt_BR/docs/kdebase/kate/regular-expressions.docbook | 1216 |
1 files changed, 1216 insertions, 0 deletions
diff --git a/tde-i18n-pt_BR/docs/kdebase/kate/regular-expressions.docbook b/tde-i18n-pt_BR/docs/kdebase/kate/regular-expressions.docbook new file mode 100644 index 00000000000..ab1e94cad15 --- /dev/null +++ b/tde-i18n-pt_BR/docs/kdebase/kate/regular-expressions.docbook @@ -0,0 +1,1216 @@ +<appendix id="regular-expressions"> +<appendixinfo> +<authorgroup> +<author +>&Anders.Lund; &Anders.Lund.mail;</author> +<othercredit role="translator" +><firstname +>Lisiane</firstname +><surname +>Sztoltz</surname +><affiliation +><address +><email +>lisiane@conectiva.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> +</appendixinfo> + +<title +>Expressões Regulares</title> + +<synopsis +>Este Apêndice contém uma breve mas suficiente introdução sobre o +mundo das <emphasis +>expressões regulares</emphasis +>. Ele documenta +expressões regulares na forma disponível dentro do &kate;, que +não é compatível com as expressões regulares do Perl, ou de +outros comandos como o <command +>grep</command +>.</synopsis> + +<sect1> + +<title +>Introdução</title> + +<para +>As <emphasis +>Expressões Regulares</emphasis +> nos fornecem uma maneira de descrever alguns possíveis conteúdos de uma string de texto, de modo a ser entendido por um pedaço de software, e assim, ele pode investigar se um texto combina, e também no caso de aplicações avançadas, com o objetivo de salvar pedaços ou o texto que combina com a busca.</para> + +<para +>Um exemplo. Digamos que você deseja buscar, em um texto, por parágrafos que iniciam com um desses nomes: <quote +>Henrik</quote +> ou<quote +>Pernille </quote +>, seguido por alguma forma do verbo <quote +>dizer</quote +>.</para> + +<para +>Em uma busca normal, você iniciaria com o primeiro nome, <quote +>Henrik </quote +>, talvez seguido por um <quote +>di</quote +>, como isto: <userinput +> Henrik di</userinput +>, e ao procurar por combinações, teria que descartar aquelas que não estão do início de uma parágrafo, bem como aquelas em que a palavra inicia com as letras <quote +>di</quote +> como <quote +>disse</quote +>, ou <quote +>diz</quote +>, e assim por diante. E então, isto causa a repetição de tudo isto com o próximo nome...</para> + +<para +>Com as Expressões Regulares, aquela tarefa poderia ser cumprida com uma única busca, e com um grau maior de precisão.</para> + +<para +>Para obter isto, as Expressões Regulares definem regras para expressar em detalhes uma generalização de uma string que será procurada. Podemos literalmente expressar nosso exemplo assim: <quote +> Uma linha iniciada com <quote +>Henrik</quote +> ou <quote +>Pernille </quote +> (possivelmente seguido por 4 caracteres em branco ou tabs) seguido por um espaço em branco, seguido por um <quote +>di</quote +> e então, um <quote +>iz</quote +> ou <quote +>sse</quote +></quote +>, que poderia ser colocado na seguinte expressão regular:</para +> <para +><userinput +>^[ \t]{0,4}(Henrik|Pernille) di(sse|z)</userinput +></para> + +<para +>O exemplo anterior demonstra todos os quatro conceitos principais das Expressões Regulares modernas, chamados:</para> + +<itemizedlist> +<listitem +><para +>Padrões</para +></listitem> +<listitem +><para +>Afirmações</para +></listitem> +<listitem +><para +>Quantificadores</para +></listitem> +<listitem +><para +>Referências para trás</para +></listitem> +</itemizedlist> + +<para +>O acento circunflexo (<literal +>^</literal +>) no início da expressão é uma afirmação, sendo verdade somente se a string relacionada estiver no início de uma linha.</para> + +<para +>As strings <literal +>[ \t]</literal +> e <literal +>(Henrik|Pernille) di(sse|z)</literal +> são padrões. A primeira é uma <emphasis +>classe de caractere </emphasis +> que combina ou com um espaço em branco ou com um caractere de tabulação (horizontal); o outro padrão contém primeiramente um sub-padrão que combina ou com <literal +>Henrik</literal +> <emphasis +>ou com </emphasis +> <literal +>Pernille</literal +>. Em seguida, vem um pedaço que corresponde exatamente com a string <literal +>di</literal +> e, finalmente segue um sub-padrão que combina com <literal +>sse</literal +> <emphasis +>ou</emphasis +> com <literal +>z</literal +>.</para> + +<para +>A string <literal +>{0,4}</literal +> é um quantificado dizendo <quote +>qualquer número de 0 até 4 da string anterior</quote +>.</para> + +<para +>Por causa do suporte ao conceito de <emphasis +>referência para trás </emphasis +> das expressões regulares, é economizado uma parte inteira combinada da string, bem como os sub-padrões incluídos em parênteses; fornecidos alguns tipos de acesso para aquelas referências, podemos obter nossos meios de encontrar a string inteira (ao se procurar um documento de texto em um editor com uma expressão regular, o que é marcado freqüentemente) ou o nome encontrado, ou a última parte do verbo.</para> + +<para +>Toda junta, a expressão procurará o que você desejar que ela procure, e somente ali.</para> + +<para +>As seções seguintes descreverão em detalhes como construir e usar padrões, classes de caracteres, afirmações, quantificadores e referências para trás, e a seção final fornecerá alguns exemplos úteis.</para> + +</sect1> + +<sect1 id="regex-patterns"> + +<title +>Padrões</title> + +<para +>Padrões consistem de strings literais e classes de caracteres, e podem conter sub-padrões, que são padrões cercados por parênteses.</para> + +<sect2> +<title +>Escapando caracteres</title> + +<para +>Em padrões, bem como em classes de caracteres, alguns caracteres possuem um significado especial. Para combinar literalmente quaisquer um destes caracteres, eles devem ser marcados ou <emphasis +> escapados</emphasis +>, para deixar com que o software saiba que deve interpretar tais caracteres de maneira literal.</para> + +<para +>Isto é feito anexando no início do caractere uma barra invertida (<literal +>\</literal +>).</para> + + +<para +>O software de expressão regular silenciosamente ignorará, escapando um caractere que não possui nenhum significado especial no contexto; assim, escapar, por exemplo, um <quote +>j</quote +> (<userinput +>\j </userinput +>) é seguro. Se você tiver dúvidas se um caractere possui significado especial, você pode, portanto, escapá-lo seguramente.</para> + +<para +>Para escapar a própria barra invertida, para combinar literalmente, você escreveria <userinput +>\\</userinput +>.</para> + +</sect2> + +<sect2> +<title +>Classes de Caracteres e abreviações</title> + +<para +>Uma <emphasis +>classe de caractere</emphasis +> é uma expressão que combina um dos caracteres de um conjunto definido. Em Expressões Regulares, as classes de caracteres são definidas colocado-se os caracteres legais em uma classe com colchetes (<literal +>[]</literal +>), ou usando uma das classes abreviadas descritas abaixo.</para> + +<para +>Classes de caracteres simples contém um ou mais caracteres literais, como por exemplo <userinput +>[abc]</userinput +> (combinando com uma das letras: <quote +>a</quote +>, <quote +>b</quote +> ou <quote +>c</quote +>) ou <userinput +>[0123456789]</userinput +> (combinando com qualquer dígito).</para> + +<para +>Pela ordem lógica das letras e dígitos, você pode abreviá-los especificando intervalos com eles: <userinput +>[a-c]</userinput +> é igual a <userinput +>[abc]</userinput +> e <userinput +>[0-9]</userinput +> é igual a <userinput +>[0123456789]</userinput +>. Combinando estas construções, o exemplo <userinput +>[a-fynot1-38]</userinput +> é completamente legal (ele combinaria com um destes: <quote +>a</quote +>,<quote +>b</quote +>,<quote +>c </quote +>,<quote +>d</quote +>, <quote +>e</quote +>,<quote +>f</quote +>, <quote +>y</quote +>, <quote +>n</quote +>,<quote +>o</quote +>,<quote +>t </quote +>, <quote +>1</quote +>, <quote +>2</quote +>,<quote +>3</quote +> ou com <quote +>8</quote +>).</para> + +<para +>Como as letras maiúsculas são diferentes de minúsculas em expressões, para criar uma classe de caracteres que não diferenciasse maiúsculas de minúsculas, combinando por exemplo com <quote +>a</quote +> ou <quote +>b</quote +>, em qualquer caso, você precisaria escrever <userinput +>[aAbB]</userinput +>.</para> + +<para +>Isto faz com que seja possível criar uma classe <quote +>negativa</quote +> combinando com <quote +>tudo menos aquilo</quote +>. Para fazer isto, coloque o acento circunflexo (<literal +>^</literal +>) no início da classe: </para> + +<para +><userinput +>[^abc]</userinput +> combinará com qualquer caractere <emphasis +>menos com </emphasis +> <quote +>a</quote +>, <quote +>b</quote +> ou <quote +>c</quote +>.</para> + +<para +>Além disso, para caracteres literais, algumas abreviações são definidas, tornando a vida um pouco mais fácil: <variablelist> + +<varlistentry> +<term +><userinput +>\a</userinput +></term> +<listitem +><para +>Isto combina com o caractere <acronym +>ASCII</acronym +> da campainha (BEL, 0x07).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\f</userinput +></term> +<listitem +><para +>Isto combina com o caractere <acronym +>ASCII</acronym +> de nova página (FF, 0x0C).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\n</userinput +></term> +<listitem +><para +>Isto combina com o caractere <acronym +>ASCII</acronym +> de nova linha (LF, 0x0A, nova linha do Unix).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\r</userinput +></term> +<listitem +><para +>Isto combina com o caractere <acronym +>ASCII</acronym +> de retorno de carro (CR, 0x0D).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\t</userinput +></term> +<listitem +><para +>Isto combina com o caractere <acronym +>ASCII</acronym +> de tabulação horizontal (HT, 0x09).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\v</userinput +></term> +<listitem +><para +>Isto combina com o caractere <acronym +>ASCII</acronym +> de tabulação vertical (VT, 0x0B).</para +></listitem> +</varlistentry> +<varlistentry> +<term +><userinput +>\xhhhh</userinput +></term> + +<listitem +><para +>Isto combina com o caractere Unicode correspondente ao número hexadecimal hhhh (entre 0x0000 e 0xFFFF). \0ooo (&ie;, \zero ooo) combina com o caractere <acronym +>ASCII</acronym +>/Latin-1 correspondente ao número octal ooo (entre 0 e 0377).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>.</userinput +> (ponto)</term> +<listitem +><para +>Isto combina com qualquer caractere (incluindo nova linha).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\d</userinput +></term> +<listitem +><para +>Isto combina com um dígito. É igual a <literal +>[0-9]</literal +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\D</userinput +></term> +<listitem +><para +>Isto combina com um caractere que não seja dígito. Igual a <literal +> [^0-9]</literal +> ou <literal +>[^\d]</literal +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\s</userinput +></term> +<listitem +><para +>Isto combina com um caractere em branco. Praticamente igual a <literal +>[\t\n\r]</literal +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\S</userinput +></term> +<listitem +><para +>Combina com o que não seja espaço em branco. Praticamente igual a <literal +>[^\t\r\n]</literal +>, e igual a <literal +>[^\s]</literal +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\w</userinput +></term> +<listitem +><para +>Combina com quaisquer <quote +>caractere da palavra</quote +>, neste caso quaisquer letras ou dígitos. Note que o caractere de sublinhado (ou underscore - <literal +>_</literal +>) não combina, como é o caso com expressões regulares do Perl. Igual a <literal +>[a-zA-Z0-9]</literal +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\W</userinput +></term> +<listitem +><para +>Combina com qualquer caractere diferente de palavra - qualquer coisa menos letras ou números. Igual a <literal +>[^a-zA-Z0-9]</literal +> ou <literal +>[^\w]</literal +></para +></listitem> +</varlistentry> + + +</variablelist> + +</para> + +<para +>As classes abreviadas pode ser colocadas dentro de classes personalizadas, como por exemplo: para combinar um caractere de palavra, um em branco ou um ponto, você poderia escrever <userinput +>[\w\.]</userinput +></para +> + +<note +> <para +>A notação POSIX de classes, <userinput +>[:<nome da classe>:]</userinput +>, atualmente não é suportada.</para +> </note> + +<sect3> +<title +>Caracteres com significado especial dentro das classes</title> + +<para +>Os seguintes caracteres possuem um significado especial dentro da construção <quote +>[]</quote +> de classes de caractere, e deve ser escapado para ser literalmente incluído em uma classe:</para> + +<variablelist> +<varlistentry> +<term +><userinput +>]</userinput +></term> +<listitem +><para +>Finaliza a classe. Deve ser escapado, a menos que este caractere seja o primeiro da classe (pode ser seguido por um circunflexo não-escapado)</para +></listitem> +</varlistentry> +<varlistentry> +<term +><userinput +>^</userinput +> (circunflexo)</term> +<listitem +><para +>Denota uma classe negativa, se for o primeiro caractere. Deve ser escapado para combinar literalmente, se for o primeiro caractere da classe.</para +></listitem +> +</varlistentry> +<varlistentry> +<term +><userinput +>-</userinput +> (hífen)</term> +<listitem +><para +>Denota um intervalo lógico. Deve sempre ser escapado dentro de uma classe.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><userinput +>\</userinput +> (barra invertida)</term> +<listitem +><para +>O caractere de escape. Deve sempre ser escapado.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +</sect2> + +<sect2> + +<title +>Alternativas: combinando <quote +>um deles</quote +></title> + +<para +>Se você deseja combinar um de um conjunto de padrões alternativos, pode separá-los com o caractere de barra vertical: <literal +>|</literal +></para> + +<para +>Por exemplo: para encontrar a palavra <quote +>John</quote +> ou a palavra <quote +>Harry</quote +>, você usaria uma expressão do tipo <userinput +>John|Harry</userinput +>.</para> + +</sect2> + +<sect2> + +<title +>Sub-padrões</title> + +<para +><emphasis +>Sub-padrões</emphasis +> são padrões fechados entre parênteses, e possuem vários usos no mundo das expressões regulares.</para> + +<sect3> + +<title +>Especificando alternativas</title> + +<para +>Você pode usar sub-padrões para agrupar um conjunto de alternativas dentro de um padrão maior. As alternativas são separadas pelo caractere <quote +>|</quote +> (barra vertical).</para> + +<para +>Por exemplo: para procurar uma das palavras <quote +>int</quote +>, <quote +>float</quote +> ou <quote +>double</quote +>, você poderia usar o padrão <userinput +>int|float|double</userinput +>. Se você deseja somente encontrar delas, se for seguida por algum espaço em branco e então algumas letras, coloque as alternativas dentro de um sub-padrão: <userinput +>(int|float|double)\s+\w+</userinput +>.</para> + +</sect3> + +<sect3> + +<title +>Capturando texto relacionado (referências anteriores)</title> + +<para +>Se você deseja usar uma referência anterior, use um sub-padrão para ter a parte desejada do padrão lembrada.</para> + +<para +>Por exemplo: se você deseja encontras duas ocorrências da mesma palavra, separadas por vírgula, e possivelmente algum espaço em branco, poderia escrever: <userinput +>(\w+),\s*\1</userinput +>. O sub-padrão <literal +>\w+</literal +> procuraria pelo pedaço dos caracteres da palavra, e a expressão inteira combinaria se aquelas forem separadas por uma vírgula, 0 ou mais espaços em branco, e então, um pedaço igual de caracteres da palavra (a string <literal +>\1</literal +> referencia <emphasis +>o primeiro sub-padrão entre os parênteses</emphasis +>).</para> + +<!-- <para +>See also <link linkend="backreferences" +>Back references</link +>.</para +> --> + +</sect3> + +<sect3 id="lookahead-assertions"> +<title +>Afirmações Adiante</title> + +<para +>Uma afirmação do tipo adiante é um sub-padrão, iniciando com <literal +>?=</literal +> ou <literal +>?!</literal +>.</para> + +<para +>Por exemplo: para combinar a string literal <quote +>Bill</quote +> , mas somente seguida por <quote +> Gates</quote +>, você poderia usar esta expressão: <userinput +>Bill(?! Gates)</userinput +> (isto procuraria por <quote +>Bill Clinton</quote +>, bem como por <quote +>Billy the kid</quote +>, mas ele silenciosamente ignoraria as outras combinações).</para> + +<para +>Os sub-padrões usados para as afirmações não são capturados.</para> + +<para +>Veja também em <link linkend="assertions" +>Afirmações</link +></para> + +</sect3> + +</sect2> + +<sect2 id="special-characters-in-patterns"> +<title +>Caracteres com significado especial dentro de padrões</title> + +<para +>Os seguintes caracteres possuem um significado especial dentro de um padrão, e devem ser escapados, caso você deseje procurá-los literalmente: <variablelist> + +<varlistentry> +<term +><userinput +>\</userinput +> (barra invertida)</term> +<listitem +><para +>O caractere de escape.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>^</userinput +> (circunflexo)</term> +<listitem +><para +>Combina com o início da string.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>$</userinput +></term> +<listitem +><para +>Combina com o fim da string.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>()</userinput +> (parênteses esquerdo e direito)</term> +<listitem +><para +>Denota sub-padrões.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>{}</userinput +> (abre e fecha chaves)</term> +<listitem +><para +>Denota quantificadores numéricos.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>[]</userinput +> (abre e fecha colchetes)</term> +<listitem +><para +>Denota classes de caracteres.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>]</userinput +> (barra vertical)</term> +<listitem +><para +>OR lógico. Alternativas separadas.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>+</userinput +> (sinal de mais)</term> +<listitem +><para +>Quantificador, 1 ou mais.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>*</userinput +> (asterisco)</term> +<listitem +><para +>Quantificador, 0 ou mais.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>?</userinput +> (ponto de interrogação)</term> +<listitem +><para +>Um caractere opcional. Pode ser interpretado como um quantificador, 0 ou 1.</para +></listitem> +</varlistentry> + +</variablelist> + +</para> + +</sect2> + +</sect1> + +<sect1 id="quantifiers"> +<title +>Quantificadores</title> + +<para +><emphasis +>Quantificadores</emphasis +> permitem que uma expressão regular combine dentro de um número especificado ou de um intervalo de números, com um caractere, uma classe de caracteres ou um sub-padrão.</para> + +<para +>Os quantificadores estão dentro de chaves (<literal +>{</literal +> e <literal +>} </literal +>), e possuem como forma geral: <literal +>{[mínimo-ocorrências][, [máximo-ocorrências]]}</literal +> </para> + +<para +>O uso é melhor explicado através do exemplo: <variablelist> + +<varlistentry> +<term +><userinput +>{1}</userinput +></term> +<listitem +><para +>Exatamente 1 ocorrência</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>{0,1}</userinput +></term> +<listitem +><para +>Zero ou 1 ocorrência</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>{,1}</userinput +></term> +<listitem +><para +>O mesmo, mas com menos trabalho ;)</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>{5,10}</userinput +></term> +<listitem +><para +>No mínimo 5 e no máximo 10 ocorrências.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>{5,}</userinput +></term> +<listitem +><para +>No mínimo 5 ocorrências, sem máximo.</para +></listitem> +</varlistentry> + +</variablelist> + +</para> + +<para +>Adicionalmente, existe algumas abreviações: <variablelist> + +<varlistentry> +<term +><userinput +>*</userinput +> (asterisco)</term> +<listitem +><para +>igual a <literal +>{0,}</literal +>, procura por quaisquer número de ocorrências.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>+</userinput +> (sinal de mais)</term> +<listitem +><para +>similar a <literal +>{1,}</literal +>, no mínimo 1 ocorrência.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>?</userinput +> (ponto de interrogação)</term> +<listitem +><para +>similar a <literal +>{0,1}</literal +>, zero ou 1 ocorrência.</para +></listitem> +</varlistentry> + +</variablelist> + +</para> + +<sect2> + +<title +>Guloso</title> + +<para +>Ao usar os quantificadores sem máximo, as expressões regulares padronizam a combinação para o mais próximo da string procurada possível, comumente conhecido como comportamento <emphasis +>guloso</emphasis +>.</para> + +<para +>O software moderno de expressões regulares fornece o chamado <quote +>desligamento</quote +> do modo 'guloso', embora em um ambiente gráfico a interface fornece a você o acesso a isto. Por exemplo, um diálogo de busca, fornecendo a busca para uma expressão regular, poderia ter uma caixa chamada <quote +>Combinação Mínima</quote +>, bem como indicar se o 'modo guloso' é o comportamento padrão.</para> + +</sect2> + +<sect2> +<title +>Exemplos do Contexto</title> + +<para +>Aqui estão alguns exemplos do uso de quantificadores</para> + +<variablelist> + +<varlistentry> +<term +><userinput +>^\d{4,5}\s</userinput +></term> +<listitem +><para +>Combina com os dígitos em <quote +>1234 ir</quote +> e <quote +>12345 agora,</quote +> mas não combina com <quote +>567 sete</quote +> nem com <quote +>223459 algum local</quote +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\s+</userinput +></term> +<listitem +><para +>Combina uma ou mais vezes com caracteres de espaço em branco</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>(bla){1,}</userinput +></term> +<listitem +><para +>Combina com todos os <quote +>blablabla</quote +>, e com <quote +>bla</quote +> em <quote +>blackbird</quote +> ou <quote +>tabla</quote +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>/?></userinput +></term> +<listitem +><para +>Combina com <quote +>/></quote +> em <quote +><fecharitem/></quote +> bem como com <quote +>></quote +> em <quote +><abriritem></quote +>.</para +></listitem> +</varlistentry> + +</variablelist> + +</sect2> + +</sect1> + +<sect1 id="assertions"> +<title +>Afirmações</title> + +<para +><emphasis +>Afirmações</emphasis +> permitem que uma expressão regular combine com certas condições controladas.</para> + +<para +>Uma afirmação não precisa de um caractere para combinar, e em vez disso ela investiga as adjacentes de uma possível combinação, antes de conhecê-la. Por exemplo: a afirmação <emphasis +>limite da palavra </emphasis +> não tenta encontrar um caractere que não seja da palavra, oposto de uma palavra em sua posição, e ao invés disso, ele certifica-se de que não existe um caractere da palavra. Isto significa que a afirmação pode combinar onde não existe caractere, &ie;, no final de uma string procurada.</para> + +<para +>Algumas afirmações realmente possuem um padrão para combinar, mas a parte da string combinando não será uma parte do resultado da busca da expressão inteira.</para> + +<para +>As Expressões Regulares, como documentadas aqui, suportam as seguintes afirmações: <variablelist> + +<varlistentry +> +<term +><userinput +>^</userinput +> (circunflexo: início de string)</term +> +<listitem +><para +>Combina com o início da string procurada.</para +> <para +>A expressão <userinput +>^Peter</userinput +> combinará com <quote +> Peter</quote +> na string <quote +>Peter, ei!</quote +>, mas não com <quote +>Ei, Peter!</quote +> </para +> </listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>$</userinput +> (final da string)</term> +<listitem +><para +>Combina com o fim da string procurada.</para> + +<para +>A expressão <userinput +>você\?$</userinput +> combinará com o 'você' no final da string <quote +>É isto que deseja para você?</quote +>, mas não combinará com <quote +>É isto que deseja para você, certo?</quote +></para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>\b</userinput +> (limite da palavra)</term> +<listitem +><para +>Combina se existir um caractere da palavra, mas não combina com o caractere de outra.</para> +<para +>Isto é útil para encontrar finais de palavras, como por exemplo, finais para encontrar uma expressão inteira. A expressão <userinput +>\bem\b </userinput +> procurará separado por <quote +>em</quote +> na string <quote +>Ele estava em prantos no embarque</quote +>, mas não combinará, por exemplo, com o <quote +>em</quote +> de <quote +> embarque</quote +>.</para +></listitem> + +</varlistentry> + +<varlistentry> +<term +><userinput +>\B</userinput +> (sem limite de palavra)</term> +<listitem +><para +>Combina com tudo que <quote +>\b</quote +> não combina.</para> +<para +>Isto significa que ele combinará com string dentro de palavras. A expressão <userinput +>\Em\B</userinput +> combinará com <quote +>embarque</quote +> mas não com <quote +>Ele estava em prantos</quote +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>(?=PADRÃO)</userinput +> (adiante positivo)</term> +<listitem +><para +>Uma afirmação adiante olha na parte da string seguinte, como uma possível combinação. O 'adiante positivo' prevenirá a string de combinação , se o texto seguinte não combina com o <emphasis +>PADRÃO</emphasis +> da afirmação, mas o texto combinado não será incluído no resultado.</para> +<para +>A expressão <userinput +>carta(?=\w)</userinput +> combinará com <quote +>carta</quote +> em <quote +>cartada</quote +>, mas não em <quote +>O jogador deu uma cartada!</quote +></para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +>(?!PADRÃO)</userinput +> (adiante negativo)</term> + +<listitem +><para +>O 'adiante negativo' previne que uma possível combinação seja de conhecimento, se a seguinte parte da string buscada não combina com seu <emphasis +>PADRÃO</emphasis +>.</para> +<para +>A expressão <userinput +>const \w+\b(?!\s*&)</userinput +> combinará com <quote +>const char</quote +> na string <quote +>const char* foo </quote +> enquanto que não combinará <quote +>const QString</quote +> em <quote +>const QString& bar</quote +>, pois o <quote +>& </quote +> combina com o padrão de afirmação negativo.</para> +</listitem> +</varlistentry> + +</variablelist> + +</para> + +</sect1> + +<!-- TODO sect1 id="backreferences"> + +<title +>Back References</title> + +<para +></para> + +</sect1 --> + +</appendix> |