O Projeto é um programa em python que encontra emails em uma página WEB. Abaixo é apresentado a sintaxe básica das Expressões Regulares e também a classe Regex.
Expressões Regulares são usadas para identificar um padrão em uma string. É uma forma matemática usada para calcular e identificar certos caracteres usados para definir padrões numa cadeira de caracteres (strings).
Uma expressão regular pode definir um padrão de busca em um documento.
- Lista telefônica
- Código genético
- Corretor ortográfico
Ex: /Ian Luccas/g
Esse exemplo pode ser traduzido parar: /[I][a][n]\s[L][u][c][c][a][s]
/g Repare que o caractere vazio é representado por \s
Esse mesmo exemplo só que considerando letras maiúsculas e minúsculas: /[Ii][aA][nN]\s[Ll][uU][cC][cC][aA][sS]
/g
Detalhe: Há caracteres que já são especiais para as expressões regulares. A expressão /.
/g significa qualquer caractere. Caso o caractere '.' faça parte da sua busca, então temos que usar uma barra invertida antes do caractere especial, assim '/\.
/g'
Buscar todos os telefones que terminan em 99
/-\d\d99
/g: O '\d' significa qualquer dígito de 0 a 9
Encontrar, dentro da sequência de nucleotídios (DNA), uma sequência em que tenha 'G' seguindo de 2 nucleotídos qualquer e depois seguido de um 'A'
/G..A
/g
O meta caractere ^ represneta o INÍCIO da linha, ou seja, o início de cada parágrafo. O exemplo /^Eu
/gm encontra todos os parágrafos que começam com 'Eu'. Detalhe que o 'm' do 'gm' vem de multilines, isso são as FLAGS da nossa busca, a flag multilines precisa ser ativada quando a sua aplicação está trabalhando com múltiplos parágrafos. O 'g' vem de global.
O \w representa qualquer caractere alfanumérico
Expressão regular para verificar se você digitou o ponto final em todos os parágrafos:
/\w$
/gm
Buscar todos os caracteres de 'a' até 'f'. Para isso vamos usar os denotadores (criadores de classe), ou seja, vamos definir nosso próprio cojunto de caracteres para a bucsa.
/[abcdef]
/gm ou melhor ainda /[a-f]
/gm
Isso funciona também com dígitos: /[1-3]
/gm
/-\d{2}99
/g
Além de especificar a quantidade de caracteres, os quantificadores também servem quando você não sabe exatamente quantos caracteres são, mas tem o valor do mínimo e do máximo.
Encontrar as palavras que começam com a literal 'C' e terminam com a literal 'o'
/C\w{1,}o
/gm
Seleciona as palavra 'você' no singular e no plural
/vocês?
/gm
O '?' significa que o caractere antes dele pode ou não existir. O diferente aqui é que quando encontramos um '?' na expressão regular, devemos observar o caractere anterior e não o seguinte. O '?' pode ser usado para identicicar urls com http ou https, seria assim: /https?
/gm
O * é uma forma prática de informar que naquela posição da expressão pode haver quantas vezes possíveis aquele caractere, mas também pode não haver a ocorrência de nenhum. O '?' pode definir apenas a existência e a não existência daquele caractere. Esse mesmo exemplo pode ser feito por outras formas: /https{0,1}
/gm
A expressão regular usando o * ou o ? é indicada porque fica mais simples para ser compreendida.
Selecione os parágrafos de uma página html
Para isso, temos que usar uma expressão regular preguiçosa e não uma expressão regular fominha. A expressão regular preguiçosa seleciona o mínimo necessário, esse modo vai selecionar o texto assim que for encontrado algo que case com o que foi especificado na expressão. O símbolo para a expressão preguiçosa é o '?'
/<p>.*?</p>
/gm
Selecione todos os títulos h2 e h3 da página html
/<h(3|2)>.*</h(3|2)>
/gm
Foi usado os parenteses para definir um conjunto e o caractere '|' para definir o operador lógico OU
Selecione tudo que não for 'a', 'e' e 'i'
Para selecionar tudo o que tiver 'a', 'e' e 'i' fazemos: /[aei]
/gm
A negação disso fica: /[^aei]
/gm
Operador de Negação:
selecionar tudo o que não é dígito \D
selecionar tudo o que não é palavra \W
Selecione na lista telefônica todas as Vitórias que tiverem o sobrenome Medeiros.
/Vitória\s(?=Medeiros)
/gm
A Negação disso, ou seja, todas as Vitórias que não tiverem o sobrenome Medeiros, seria: /Vitória\s(?!Medeiros)
/gm
Selecione no texto as palavras que estão duplicadas uma após a outra, por exemplo, "Estado da da
arte com foco ...". Essa seleção pode ser usada como maneira de correção ortográfica.
/\b(\w+)\s\1\b
/gm
O \b é um delimitador de palavras, limitando o início e o fim da palavra. o \1 faz referência ao primeiro grupo definido '(\w+)', um grupo está sempre entre parenteses. Em outras palavras, no texto o que tem em '(\w+)' tem que ser IGUAL ao que tem em \1
No caso da solução dada pelo exemplo 10, se na página html tivesse algo do tipo: <h2> Parágrafo <\h3>
A expressão iria selecionar. Para resolver esse problema, vamos usar o conceito de referência apresentado anteriormente:
/<h(3|2)>.*</h\1>
/gm