seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

[tutorial] regex em perl

2 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1[tutorial] regex em perl Empty [tutorial] regex em perl Qua Ago 15, 2012 9:00 am

Kodo no Kami

Kodo no Kami
master
master

bom galera nesse tutorial vou falar de regex, os regex permite manipular uma string podendo tirar uma parte da string ou simplesmente saber se essa determinada parte existe ou nao, para entender melhor veja a string abaixo

" codename: hacker fts315 \n nome: flavio \n area: programaçao"

imagine se eu fosse fazer um script q pegava apenas a parte "nome: flavio" da string acima '-' , eu poderia fazer uma sub-rotina q captura caracter por caracter ate o a parte quebra de linha (\n) e armazenando em variaveis diferente a cada quebra de linha , depois checar qual das variaveis começa com "nome:", ja imagino o trabalho q isso daria '-', para facilitar existe os regex q permite fazer tudo isso ou ate mais de um jeito rapido e facil, para usar uma regex agente vai fazer uma especie de comparaçao e vamos usar =~ indicando comparaçao e // para usar o regex, veja abaixo uma comparaçao normal entre strings

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
if($fts eq "hacker fts315")
{
  print "igual";
}
else
{
  print "diferente";
}

agora vamos comparar usando o regex

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
if($fts =~ /hacker fts315/)
{
  print "igual";
}
else
{
  print "diferente";
}

a vantagem do regex q eu posso usar apenas uma parte do codigo para comparar veja abaixo usei apenas fts315 para comparar com a string toda, fts315 tem na string entao ele vai retornar verdadeiro se eu usar a comparaçao normal ele ia comparar as duas string (atravez de comparçao de caracter por carecter) e retornaria falso

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
if($fts =~ /fts315/)
{
  print "igual";
}
else
{
  print "diferente";
}

outro exemplo se eu nao soube-se o 315 do fts eu poderia usar . para indicar qualquer caracter

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
if($fts =~ /fts.../)
{
  print "igual";
}
else
{
  print "diferente";
}

quando eu quero colocar um caracter qualquer mais especificar quais, eu uso [] e dentro eu coloco os caracter por exemplo a ate z minusculo seria [a-z], numero 0 ate 9 [0-9], veja o exemplo abaixo se tiver 3 numeros depois do fts o resultado retorna verdadeiro e exibe igual, se nao ele retorna falso e exibe diferente

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
if($fts =~ /fts[1-9][1-9][1-9]/)
{
  print "igual";
}
else
{
  print "diferente";
}

quando agente quer q regex nao diferencie maiusculo e minusculo agente usa i no final da regex //i

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
if($fts =~ /FtS315/i)
{
  print "igual";
}
else
{
  print "diferente";
}

quando agente necessita usar o barra / em uma regex agente tem q colocar contra-barra antes \/

Código:
#!/usr/bin/perl
$fts = "hacker / fts315";
if($fts =~ /hacker \/ fts315/)
{
  print "igual";
}
else
{
  print "diferente";
}

agora q agente aprendeu o basico vamos aprender a capturar parte da string, nem vou usar codiçao if aq apena o regex e comparaçao dele, para caputrar uma parte agente coloca entre parenteses o texto, e atribuimos tudo a uma array, depois so ler a posiçao da array

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
@hack = $fts =~ /(fts315)/;
print $hack[0];

veja outro exemplo ele capturando apenas o numero

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
@hack = $fts =~ /fts(315)/;
print $hack[0];

no exemplo abaixo ele armazena o fts em uma posiçao e o numero em outra

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
@hack = $fts =~ /(fts)(315)/;
print $hack[0];
print "\n";
print $hack[1];

na source abaixo armazena o fts315 em uma posiçao o fts em outra e 315 em outra

Código:
#!/usr/bin/perl
$fts = "hacker fts315";
@hack = $fts =~ /((fts)(315))/;
print $hack[0];
print "\n";
print $hack[1];
print "\n";
print $hack[2];

bom galera isso e o basico de regex existem muitas coisas q da para fazer ^^

by hacker fts315

https://endoffile.umforum.net

2[tutorial] regex em perl Empty Re: [tutorial] regex em perl Qua Ago 15, 2012 1:06 pm

Sub7

Sub7
colaborador
colaborador

Legal post cara...

Regex é um assunto bem difícil de explicar, e de entender também... kkk
O post ficou bem explicado, por isso ganha meu + !

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos