Expressões Regulares em Perl para o Iniciante - Parte 4 Introdução Esta é a quarta parte da minha série, Expressões Regulares em Perl para o novato. Nesta parte da série, eu explico Agrupamento regex e captura em Perl. Agrupamentos Podemos usar parênteses para personagens do grupo em um padrão. Considere o seguinte padrão: /O (guitarrista) /"guitarrista" está em parênteses. Os parênteses formam um grupo, o qual tem o texto, "guitarra". Considere o seguinte: /O (guitarrista é bom) /"guitarrista é bom" está em parênteses.
Os parênteses formam um grupo, que tem o texto, "o guitarrista é bom". Perl trata um grupo como uma entidade. Um grupo por conta própria não se justificar. Torna-se importante quando usada em conjunção com outras técnicas padrão. Há um outro uso, o que veremos a seguir. Sub Cordas com peças comuns Imagine que você tem uma livraria, onde há um guarda-livros e uma estante. Aqui, guarda-livros é a pessoa que cuida dos livros. Também imagine que você tem qualquer dos seguintes textos disponíveis: $ availStr =; "Há uma estante em minha loja." $ availStr = "Eu tenho um guarda-livros.
"; $ availStr = "O guarda-livros cuida da estante."; Em seu código, você pode não saber que disponível corda está presente (a string pode ter sido tirada de algum lugar e atribuído a uma variável); no entanto, vamos dizer o seu interesse é saber se existe uma estante ou guarda-livros na seqüência de assunto. A regex para isso pode ser: /estante | guarda-livros /Note que no regex acima, temos que digitar a palavra "livro" duas vezes.
Podemos evitar esta dupla digitação, usando o seguinte regex: /livro (shelf | guarda-redes) /Esta segunda regex é mais eficiente, porque não tem que digitar a palavra "livro" duas vezes. No segundo temos o grupo: (shelf | guarda-redes). Perl trata um grupo como uma única unidade. Além disso, neste grupo, Perl tem que escolher "prateleira" ou "guardião". Desta forma, Perl terá que olhar para estante ou contador no grupo. A expressão a seguir produz uma partida. $ availStr = ~ /livro (shelf | guarda-redes) /Aqui, $ availStr pode ser qualquer uma das cordas acima.
Aqui, a palavra "livro" é comum a ambas as palavras e é a primeira parte de ambas as palavras. Você pode ter uma seqüência de sub que é a segunda parte comum de duas frases; aplica-se a mesma técnica, mas desta vez o grupo está em frente; como este: /(não-comum | não-comum) comum /O padrão pode realmente tornar-se complexa e você teria o mesmo padrão acima em diferentes locais