+ Responder ao Tópico



  1. #1

    Padrão Perl Ajuda

    Tem algum programador de perl ai ??

    sera que algum bom ser pode me ajudar a entender 2 linhas ?

    1-> ^[[:space:]]*Found( the|:)[[:space:]]*(.*)[[:space:]]*(|virus[^a-z.]*)$/2

    2-> (?=Infection\:)[[:space:]]*(.*)$


    desde-ja obrigado .

  2. #2
    Visitante

    Padrão Perl Ajuda

    Cara isso se chama REGEX ou expressao regular e nao perl

  3. #3

    Padrão Perl Ajuda

    hummmm .... não sabia .... mas enfim aguem pode me ajudar a entender isso ... ta meio complicado


    obrigado

  4. #4
    _ivy_
    Visitante

    Padrão Re: Perl Ajuda

    Citação Postado originalmente por smvda
    Tem algum programador de perl ai ??

    sera que algum bom ser pode me ajudar a entender 2 linhas ?

    1-> ^[[:space:]]*Found( the|[[:space:]]*(.*)[[:space:]]*(|virus[^a-z.]*)$/2

    2-> (?=Infection\[[:space:]]*(.*)$


    desde-ja obrigado .
    Bom.. vamos lá.. por partes..

    ^ -> inicio de linha

    [[:space:]] -> qualquer coisa dentro desses [] representa uma lista de caracteres possiveis..nesse caso [:space:] representa uma classe de espaços...

    * -> significa 0 ou mais vezes

    Found -> uma string normal, assim como the

    (the|: ) -> eh o mesmo que dizer "the" ou ":" o que nos leva a concluir que pipe signigica "ou"

    "." -> significa qualquer coisa (em termos de string)

    (|virus[^a-z.]*) -> essa linha me deixou um pouco confusa
    seria o mesmo que dizer (nada ou "virus" que nao seja a-z ou qualquer coisa uma ou mais vezes).. de repente deve ser pra dizer que nao pode ter mais nada na linha.. mas relamente nao tenho certeza

    Ah.. importante.. o "^" dentro de uma lista eh uma negaçao..

    e pro fim o $ representa final de linha.

    Na segunda linha a unica coisa que tem de diferente eh o "?" se significa 0 ou 1.. o que tbm me deixou um pouco confusa pq nao tem nada antes

    A partir disso vc pode montar a string que ta sendo procurada.. se precisar de ajuda pra isso é só falar

    Desculpa se a explicacao ficou meio confusa

    []s

  5. #5
    _ivy_
    Visitante

    Padrão Perl Ajuda

    huahuahauh.. aqueles smiles ficaram muito engraçados no meio da expressao regular :lol:

  6. #6

    Padrão Perl Ajuda

    Nossa, obrigado pela ajuda sim .. muito obrigado mesmo

    vou ver se monto algo qualquer coisa posto aqui



    Obrigado denovo

  7. #7

    Padrão Perl Ajuda

    Citação Postado originalmente por _ivy_
    huahuahauh.. aqueles smiles ficaram muito engraçados no meio da expressao regular :lol:
    hehehe tenque desativar os smilles ai funca

  8. #8

    Padrão Perl Ajuda

    _iv_ como eu faço para procurar algo usando regex

    exe: string -> your filed is infected

    como eu procuro a palavra "infected" ??


    pode me ajudar ?

  9. #9

    Padrão Perl Ajuda

    Isso nao eh la muito usado para verificar se tem so uma palavra, eh melhor voce fazer uma comparação de string para ver se retorna isso, afinal expressao regulares sao para "encontrar" diversas strings que tem um mesmo comportamento.


    claro que isso nao impede que voce monte uma expressao regular que sirva para isso:


    (infected)* serviria no seu caso, que iria ver se encontra uma ou mais palavras (infected) no texto, no caso, string passada.

  10. #10

    Padrão Perl Ajuda

    eu preciso da expressão pois o software que busca isso usa regular expression e é compativel com somente isso .

  11. #11
    Visitante

    Padrão Perl Ajuda

    Citação Postado originalmente por smvda
    _iv_ como eu faço para procurar algo usando regex

    exe: string -> your filed is infected

    como eu procuro a palavra "infected" ??


    pode me ajudar ?
    hu.. olha so.. uma palavra sozinha casa com qualquer coisa.. tu só precisa aplicar algo mais na palavra quando existe alguma regra de sequencia... tbm nao sei se entendi direito a sua pergunta
    mas pra vc entender melhor pode pensar no 'vi' .. o que vc faz quando quer procurar uma unica palavra lá? /palavra , certo?

    Hm, bom de qualquer forma, pode usar isso pra brincar:

    #!/usr/bin/perl

    while($l = <STDIN>) {
    if($l =~ /altere aqui/) {
    print "achei na linha: $l";
    }
    }

    salva isso num arquivo, da permisao de execucao. e faz:

    $ ./script < arquivo

    substitui o <altere aqui> por qualquer expressao regular.. ou por palavras soltas.. e ve o que acontece

    acho que isso vai te ajudar a entender melhor o espirito da expressao regular

    e desculpa a demora pra responder.. eu tava sem computador no findi

    []'s

  12. #12
    _ivy_
    Visitante

    Padrão Perl Ajuda

    rs.. era eu ali em cima viu?
    esqueci de logar..

    Código :
    #!/usr/bin/perl
     
    while($l = <STDIN>) {
            if($l =~ /altere aqui/) {
                    print "achei na linha: $l";
            }
    }

    Corrigindo a formatação do meu código .. eheh

  13. #13