Quantificadores de expressão regular
Construções de qualificador
Os qualificadores especificam com que frequência deve corresponder o construto de expressão regular anterior. As classes de qualificadores são:
- Guloso
- Relutante
- Possessivo
A diferença entre os quantificadores locais, relutantes e Possessivos envolve qual parte da cadeia de caracteres tentar para a correspondência inicial e como tentar novamente se a tentativa inicial não produzir uma correspondência.
Por padrão, os quantificadores são
espontâneos
. Um quantificador vidrado tenta primeiro encontrar uma correspondência com toda a cadeia de caracteres de entrada. Se isso produz uma correspondência, então a correspondência é considerada um êxito e o mecanismo pode passar para o próximo construtor na expressão regular. Se a primeira tentativa não produz uma correspondência, o mecanismo retira um caractere de cada vez até encontrar uma correspondência. Portanto, um quantificador veloz verifica as possíveis correspondências em ordem, da cadeia de caracteres de entrada mais longa até a cadeia de caracteres de entrada mais curta, tentando recursivamente da direita para a esquerda.Adicionando um
?
(período de interrogação) para um quantificador inveterado torna-o relutante em
. Um quantificador relutante primeiro tenta encontrar uma correspondência desde o início da cadeia de caracteres de entrada, começando com o trecho mais curto possível da cadeia de caracteres que corresponde à construção de expressão regular. Se isso produz uma correspondência, então a correspondência é considerada um êxito e o mecanismo pode passar para o próximo construtor na expressão regular. Se a primeira tentativa não produz uma correspondência, o mecanismo adiciona um caractere por vez até encontrar uma correspondência. Portanto, um quantificador relutante verifica as possíveis correspondências na ordem da cadeia de caracteres de entrada mais curta possível até a cadeia de caracteres de entrada mais longa, tentando recursivamente da esquerda para a direita. Adicionando um
+
(sinal de mais) para um quantificador sendo sendo Possessivo
. Um qualificador Possessivo é como um qualificador consolidação da primeira tentativa (ele tenta encontrar uma correspondência com toda a cadeia de caracteres de entrada). A diferença é que, ao contrário de um qualificador consolidação de falta de correspondência, o qualificador possuidor não tenta repetir uma cadeia de caracteres mais curta se não encontra uma correspondência. Se a correspondência inicial falha, o quantificador possuidor relata uma correspondência com falha. Ele não faz mais tentativas.Construções locatários | Construto relutante | Construtivo Possessivo | Descrição | Exemplo |
|---|---|---|---|---|
?
| ??
| ?+
| Corresponde ao caractere ou construto anterior uma vez ou não corresponde. | st?on corresponde a "son" em "johnson" e "ston" em "johnston", mas nada em " Cliton" ou "versão" |
*
| *?
| *+
| Corresponde ao caractere ou construtor anterior zero ou mais vezes. | if* corresponde a "if", "iff" em "diff" ou "i" em "print" |
+
| +?
| ++
| Corresponde ao caractere ou construtor anterior uma ou mais vezes. | if+ corresponde a "if", "iff" em "diff", mas nada em "print" |
{n}
| {n}?
| {n}+
| Corresponde ao caractere anterior ou construir exatamente n vezes. | o{2} corresponde a "co" em "lookup" e aos dois primeiros "os" em "foaaa", mas nada em "mount" |
{n,}
| {n,}?
| {n,}+
| Corresponde ao caractere ou construtor anterior pelo menos n vezes. | o{2,} corresponde a todos os 5 o em "o" em "lookup", mas nada em "mount" |
{n,m}
| {n,m}?
| {n,m}+
| Corresponde ao caractere ou construtor anterior pelo menos n vezes, mas não mais do que m vezes. | F{2,4} corresponde a "FF" em "#FF0000" e aos últimos 4 F's em "#FFFFFF" |