Como faço para corresponder a palavra apenas entre parênteses
Entrada :
this is (test.com)
Saída Desejada:
test.com
Como faço para corresponder a palavra apenas entre parênteses
Entrada :
this is (test.com)
Saída Desejada:
test.com
Respostas:
Aqui estão algumas opções, que imprimem a saída desejada:
Usando grep
com o -o
sinalizador (apenas imprimir parte correspondente da linha) e expressões regulares compatíveis com Perl ( -P
) que podem fazer uma busca :
printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
Esse regex pode precisar de algumas explicações:
(?<=\()
: Este é um aspecto positivo , o formato geral é (?<=foo)bar
e corresponderá a todos os casos bar
encontrados logo após foo
. Nesse caso, estamos procurando um parêntese de abertura, então usamos \(
para escapar dele.
(?=\))
: Esta é uma aparência positiva e simplesmente corresponde ao parêntese de fechamento.
A -o
opção para fazer grep
com que apenas imprima a parte correspondente de qualquer linha, procuramos o que estiver entre parênteses e os excluímos com sed
:
printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
Analise a coisa toda com o Perl:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
Analise a coisa toda com sed
:
printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
Uma abordagem seria usar expressões regulares compatíveis com PCRE - Perl com grep
:
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com