Forum und email

Modificadores do Padrão

(No version information available, might be only in CVS)

Modificadores do Padrão — Descreve possíveis modificadores na padrão regex

Descrição

Os atuais possíveis modificadores PCRE são listados abaixo. Os nomes entre parênteses referem-se ao nome interno destes modificadores. Espaço e newlines são ignorado nos modificadores, outros caracteres causam erro.

i (PCRE_CASELESS)
Se este modificador é usado, as letras no padrão combinam tanto maiúsculas quanto minúsculas.
m (PCRE_MULTILINE)
Por padrão, PCRE trata a string alvo como consistindo de uma única linha de caracteres (mesmo se ele realmente contêm vários newlines). O metacaractere "ínicio da linha" (^) combina somente no início da string, quando o metacaractere "fim da linha" combina somente no final da string, ou antes de um newline no fim (a menos que o modificador D seja usado). Este é o mesmo do Perl. Quando este modificador é usado, os construtores "início da linha" e "final de linha" combinam logo depois ou logo antes de algum newline na string alvo, respectivamente, bem como no começo e fim. Isto é equivalente ao modificador /m do Perl. Se não houver um caractere "\n" na string alvo, ou nenhum ocorrência do ^ ou $ no padrão, usar este modificador não tem efeito.
s (PCRE_DOTALL)
Se este modificador é usado, um metacaractere ponto no padrão combina todos caracteres, incluindo newlines. Sem ele, newlines são excluídos. Este modificador é equivalente ao modificador /s do Perl. Uma classe negada como [^a] sempre combina um caractere newline, independente do uso deste modificador.
x (PCRE_EXTENDED)
Se este modificador é usado, caracteres whitespace no padrão são totalmente ignorado exceto quando escapado ou dentro de um classe de caractere, e inclusive caracteres entre um # não precedido de escape fora de uma classe de caracteres e o próximo caractere newline, são também ignorados. Este é equivalente ao modificador /x do Perl, tornando possível incluir comentários dentro de padrões complicados. Note, contudo, que isto é aplicado somente a caracteres de dados. Caracteres whitespace nunca podem aparecer dentro de especial sequência de caracteres no padrão, por exemplo na sequência (?( que introduz um subpadrão condicional.
e (PREG_REPLACE_EVAL)
Se este modificador é usado, preg_replace() faz a normal substituição de backreferences na string substituta, avaliando-a como código PHP, e usando o resultado para trocar a string procurada. Aspas simples, aspas duplas, escape e caractere NULL terão escape nos backreferences.

Somente preg_replace() usa este modificador; ele é ignorado por outras funções PCRE.

Nota: Este modificador não era disponível no PHP 3.

A (PCRE_ANCHORED)
Se este modificador é usado, o padrão é forçado para ser "âncorado", isto é, ele restringido para combinar somente no início da string que está sendo procurada (a "string alvo"). Este efeito pode também ser alcançado pelo apropriado construtor no padrão, que é o única forma de fazer em Perl. If this modifier is set, the pattern is forced to be "anchored", that is, it is constrained to match only at the start of the string which is being searched (the "subject string"). This effect can also be achieved by appropriate constructs in the pattern itself, which is the only way to do it in Perl.
D (PCRE_DOLLAR_ENDONLY)
Se este modificador é usado, o metacaractere dólar no padrão combina somente no final da string alvo. Sem este modificador, um dólar também combina imediatamente antes do caractere final se ele for um newline (mas não antes de outros newlines). Este modificador é ignorado se o modificador m é usado. Não há um equivalente a este modificador no Perl.
S
Quando um padrão será usado diversas vezes, vale a pena gastar mais tempo analisando em favor da velocidade a fim apressar a combinação. Se este modificador for usado, esta análise extra será executada. Atualmente, estudar um teste padrão é útil somente para os testes padrões não escorados, que não têm um único caracter inicial fixo.
U (PCRE_UNGREEDY)
Este modificador inverte a "gulosidade" dos quantificadores de modo que não sejam gulosos por padrão, mas torna-se guloso se seguido por "?". Não é compatível com Perl. Pode também ser usado por um (?U) que ajusta-se dentro do teste padrão ou por uma interrogação depois de um quantificador (por exemplo .*?).
X (PCRE_EXTRA)
Este modificador aciona uma funcionalidade adicional do PCRE que é incompatível com Perl. Qualquer barra invertida (backslash) na busca que é seguida por uma letra que não tenha nenhum significado especial causa um erro, reservando assim essas combinações para futuros upgrades. Até agora não há outra funcionalidade controlada por este modificador.
u (PCRE_UTF8)
Este modificador aciona uma funcionalidade adicional de PCRE que é incompatível com Perl. As strings do padrão são tratadas como UTF-8. Este modificador está disponível no PHP 4.1.0 ou superior em Unix e no PHP 4.2.3 em WIN32. Validez do UTF-8 no padrão é verificado desde o PHP 4.3.5.