+ Responder ao Tópico



  1. #1
    Marcela
    Visitante

    Padrão expressões regulares

    oooi, td bem??

    Estou com uma dúvida sobre expressões regulares.
    Eu tenho a seguinte linha:

    int soma(int num1, int num2){

    Eu preciso obter apenas a palavra soma usando expressões regulares.
    Alguém sabe ficaria essa expressão regular para obter apenas a palavra "soma"


    Obrigada gente!

  2. #2

    Padrão expressões regulares

    Oi Marcela,

    tem diversas formas, da mais simples a mais gigantescas, tem que ver o que vai mudar em seu texto, se vai mudar a palavra, o local da palavra.
    Código :
    sed 's/\(.*\) \(.*\)(.* /\2/'
    cut -d " " -f 2 |cut -d "(" -f 1

  3. #3
    Visitante

    Padrão expressões regulares

    oooi, fiz o teste mas de nada adiantou. Não obtive o resultado esperado.
    obtive o resultado: somanum2. Na verdade queria apenas a palavra "soma"

    Mas d qualquer forma, obrigada!

  4. #4

    Padrão expressões regulares

    considerando que vai estar sempre assim no arquivo:

    int OQUEVOCEQUER(....

    se tiver um espaco entre o oquevocequer e a ( ja fura essa dica, e alias nao é bem expressao regular:

    bom voce pode tentar assim.


    - dessa maneira voce pega todas as funcoes que comecam com int no comeco da linha

    cat "arquivo"| grep ^int

    ai voce faz:
    awk '{print $2}'
    para imprimir o segundo valor: normalmente vai ser soma( se tiver um espaco vai sair so soma.

    agora para tirar o ( voce faz assim

    - ai isso aqui tira o ( que voce nao quer para pegar so a palavra.
    cut -d "(" -f1

    agora juntando tudo:

    # cat "arquivo"| grep ^int | awk '{print $2}' | cut -d "(" -f1

    tente ai, e isso nao é a melhor maneira de fazer isso....

  5. #5
    Visitante

    Padrão expressões regulares

    ooooi mistymst, como ficaria isso em expressões regulares??
    por exemplo em uma caso genérico..toda linha q tiver a palavra "soma" eu consigo pegar essa palavra.

    Obrigada, mistymst!

  6. #6

    Padrão expressões regulares

    Na verdade o que deve ser observado é o padrão do texto a ser manipulado.

    Por exemplo?
    utilizarei o seguinte: .*\(soma\).* jogado dentro de um sed.
    bem simples :

    echo "Teste ()74h4h soma kkssjsj" |sed 's/.*\(soma\).*/\1/'
    soma
    echo "soma" |sed 's/.*\(soma\).*/\1/'
    soma
    echo "int soma(int num1, int num2){ " |sed 's/.*\(soma\).*/\1/'
    soma

    Nisso estou considerando que vc quer a palavra soma não importa onde ela estiver.
    Porem veja o que ocorre num descuido do usuario:

    echo "int so2ma(int num1, int num2){ " |sed 's/.*\(soma\).*/\1/'
    int so2ma(int num1, int num2){

    Acabou com a syntaxe do comando, neste caso eu precisaria adicionar um tratamento para isso. Ouse ja, a melhor Er , glob , coringa , comando ... oque or , vai depender do padrão de texto que vc tem.

    Falou.