Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ozzyvegeta

Expressão regular...

Recommended Posts

olá...to precisando negar uma palavra para q ela não seja substituida...bom, a frase é "Estou testando {palavra} {palavra1} {palavraA} {palavraZ} blabla"eu queria que todas as palavras q estão entre "{}" fossem substituidas por "" (nada) i somente a palavra"{palavra}" não fosse substituida i o as outras "{palavra1}, {palavraA}, {palavraZ}" fosse...eu tentei isso: $var = preg_replace("#.*?\{(?!palavra)\}.*?#", "", $var);mas não funciono...alguem manja??obs:: estou começando com expressão regular

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, amigo!

Bem-vindo ao mundo das expressões regulares! :)

 

Negar uma palavra com ER é uma tarefa um tanto complicada e nem sempre eficaz, em termos de processamento. Isso porque as ERs foram criadas pra "casar" um padrão de caracteres, e não negá-los. Mas existe uma "gambi" pra negar uma palavra, que é:

 

- negar o primeiro caractere OU

- casar o primeiro caractere E negar o segundo, OU

- casar os dois primeiros caracteres E negar o terceiro, OU

- (assim por diante, até terminar a palavra)

 

Negar a palavra "casa", por exemplo, ficaria assim:

"#[^c]|c[^a]|ca[^s]|cas[^a]#"

 

Endende? Mas no seu caso, daria pra resolver de uma forma mais simples, sem precisar negar... basta você especificar que as "palavras" substituídas por uma string vazia apresentem o padrão:

- "{palavra"

- mais alguma coisa como um "1", "A", etc., obrigatoriamente

- mais um "}".

 

Veja:

 

$var = preg_replace("/\{palavra\w\}/", "", $var);

 

O "\w" serve pra casar qualquer caractere alfa-numérico ou um underline "_". Se não tiver algum desses caracteres, não casa... e, portanto, não substitui.

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh...no caso eu iria precisar de usar palavras diferentes dentro das xaves...eu usei "palavraX" como exemplo somente...bom, mas faze uq se não tem como neh...mas soh mais uma coisa...existe nas ER do PHP os comandos "(?!palavra)" (diferente "!=" do php) e "(?=palavra)" (igual "==" do php) q esta no manual q li de expressões regulares?? ou esses comandos soh existe em python e perl como dizia tb?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.