Na lição que você vinculou, você é solicitado a escrever um regex que capture o nome do arquivo desses dois
file_a_record_file.pdf
file_yesterday.pdf
e pula
testfile_fake.pdf.tmp
O regex mais simples para fazer isso é
(.*)\.pdf$
Isso significa que corresponde a tudo que termina em .pdf
, mas captura apenas o nome do arquivo.
Então, por que capturar é útil? Isso depende do programa com o qual você está usando esses regexes. A captura de padrões permite salvar o que você capturou como variável. Por exemplo, usando Perl, o primeiro padrão capturado é $1
, o segundo $2
etc:
echo "Hello world" | perl -ne '/(.+) (.+)/; print "$2 $1\n"'
Isso imprimirá "world Hello" porque o primeiro parêntesis capturou Hello
e o segundo capturou world
, mas estamos imprimindo $2 $1
para que as duas correspondências sejam invertidas.
Outras implementações regex permitem que você se refira aos padrões capturados usando ,
etc. Por exemplo, GNU
sed
:
echo "Hello world" | sed 's/\(.*\) \(.*\)/ /'
Assim, em geral, a captura de padrões é útil quando você precisa se referir a esses padrões mais tarde. Isso é conhecido como referenciamento e é brevemente explicado um pouco mais tarde nos tutoriais que você está fazendo.