[tutorial] regex em perl
Página 1 de 1
[tutorial] regex em perl
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
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
agora vamos comparar usando o regex
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
outro exemplo se eu nao soube-se o 315 do fts eu poderia usar . para indicar qualquer caracter
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
quando agente quer q regex nao diferencie maiusculo e minusculo agente usa i no final da regex //i
quando agente necessita usar o barra / em uma regex agente tem q colocar contra-barra antes \/
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
veja outro exemplo ele capturando apenas o numero
no exemplo abaixo ele armazena o fts em uma posiçao e o numero em outra
na source abaixo armazena o fts315 em uma posiçao o fts em outra e 315 em outra
bom galera isso e o basico de regex existem muitas coisas q da para fazer ^^
by hacker fts315
" 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
Tópicos semelhantes
» [tutorial] fork em perl
» [tutorial] hash no perl
» [tutorial] struct em perl
» [tutorial] criando funçao no perl
» [tutorial] socket em perl - servidor
» [tutorial] hash no perl
» [tutorial] struct em perl
» [tutorial] criando funçao no perl
» [tutorial] socket em perl - servidor
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos