Uso de expressões regulares
Informações gerais
No A-Parser, são aplicadas expressões regulares compatíveis com Perl/JavaScript, que podem ser utilizadas:
- Na extração de dados de informações arbitrárias de quaisquer sites
- No construtor de consultas para extrair ou substituir parte da consulta
- No construtor de resultados para transformar quaisquer resultados
- Ao utilizar filtros
- No construtor de expressões regulares
- Ao verificar a disponibilidade da próxima página no scraper
Net::HTTP
Documentação detalhada sobre expressões regulares pode ser encontrada nas seguintes fontes:
- Expressões regulares na WikiPedia
- Enciclopédia universal de expressões regulares do padrão PCRE
- Tópico Compartilhando regex no fórum
No A-Parser existe a possibilidade de processar qualquer resultado usando uma expressão regular; para isso, utiliza-se a opção Parse custom results (Usar regex):

Particularidades de uso e flags
- Expressões regulares são escritas sem delimitadores
// - As seguintes flags são suportadas:
- i - busca insensível a maiúsculas e minúsculas
- s - o ponto inclui todos os caracteres, incluindo quebras de linha
- g - busca global ou substituição
Além disso, é possível indicar uma flag na própria regex, por exemplo, buscar a palavra test em cada linha de todo o texto (ou do código da página, dependendo de onde a regex é aplicada) usando a flag m (multi line - os símbolos ^ e $ funcionam como início e fim da linha, respectivamente):
(?m)^(.+?test.+?)$
Extração de informações arbitrárias

Com a ajuda da opção Parse custom results (Usar regex) ou do Construtor de resultados, é possível utilizar expressões regulares para extrair informações arbitrárias dos resultados da extração de dados, por exemplo, do código-fonte HTML das páginas ou de resultados já preparados
- Em Parse result (On) (Aplicar a), seleciona-se o resultado do scraper; pode ser um resultado simples ou um array
- A expressão regular é especificada sem delimitadores, seguida pela possibilidade de indicar uma flag
- Em Result type (Tipo de resultado) é indicado o tipo do resultado -
Flat(resultado simples) ouArray(array). Se como resultado de origem for escolhido um array ou se for usado o flag g da expressão regular, o resultado sempre será salvo em um array. No campo Name (Nome) é indicado o nome do array - Cada parêntese de captura da expressão regular pode ser salvo como um elemento separado; o nome do elemento é inserido no campo correspondente $1 to, $2 to... - onde o número indica a ordem do parêntese de captura
- No campo RegEx (Regex), é possível usar o modelo, o que permite usar a consulta como parte da expressão regular
Os novos resultados criados podem ser usados na formatação de resultados, no construtor de resultados, na filtragem e desduplicação de resultados ou na próxima opção Parse custom results (Usar regex).
Esta opção é semelhante ao construtor de resultados ao usar RegEx Match
Exemplo de extração de links de imagens do código HTML original

Para resolver esta tarefa, usamos o scraper
Net::HTTP para obter o código-fonte da página.
Aplicamos a $data (página baixada) uma expressão regular com as flags isg, e salvamos o resultado nos elementos src do array images.
No formato do resultado, indicamos para exibir todos os elementos src separados por quebra de linha.
Como resultado da extração de dados para a consulta http://a-parser.com/, obteremos a seguinte lista no arquivo de resultado:
/img/lang/en.png
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
Baixar exemplo
Como importar um exemplo para o A-Parser
eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=
Construtor de expressões regulares
A partir da versão 1.2.78, foi adicionado o Construtor de expressões regulares.
Ele pode ser encontrado na aba Tools -> Regex Builder. Também é possível enviar o código das páginas obtidas diretamente no Teste de extração. Para isso, é necessário ativar o modo debug e clicar no link Go to RegEx Builder.

No construtor, há a possibilidade de escolher a linguagem de programação na qual as expressões regulares obtidas serão utilizadas.
Para trabalhar com o construtor, é necessário colar o texto de origem no campo à esquerda (ou ele será inserido automaticamente a partir do Teste de extração ao clicar em Go to Regex Builder). À direita, configuramos os parâmetros da futura expressão regular.
Para compor uma expressão regular simples (por exemplo, para obter o título), basta indicar os elementos necessários da expressão regular.
- No campo Before group (Antes do grupo), inserimos os caracteres que estão antes da informação que precisamos
- No campo After group (Após o grupo), inserimos os caracteres que estão após os dados necessários
- No campo Grupo começa com, indicamos os caracteres com os quais a string procurada deve começar
- No campo Group ends with (Grupo termina com), indicamos os caracteres que devem estar no final da string procurada

Como pode ser visto na captura de tela acima, montamos uma expressão regular que selecionará o title do site. Antes do grupo colocaremos <title> e depois do grupo </title>, e, como exemplo, indicaremos que a string procurada começa com a letra W.
Para um teste completo da expressão regular obtida, é possível ativar as flags necessárias: g, s e i.
Também é possível compor expressões regulares mais complexas, contendo 2 ou mais grupos.
Como exemplo, vamos tentar compor uma expressão regular para coletar todos os links e âncoras na lista <li>. Para isso, precisamos ativar a flag g e adicionar mais um grupo de busca, pois no primeiro grupo estarão os links e no segundo as âncoras.

Ao definir os parâmetros necessários para ambos os grupos, obtemos a expressão regular:
<li><a href="(.+?)">(.+?)<\/a
Para testar a expressão regular, clique no botão Teste:

Após a execução da expressão regular, o resultado do seu funcionamento é exibido abaixo: a string completa e os grupos capturados. Ao clicar duas vezes em qualquer elemento na tabela de resultados, o texto inicial rola até o local onde essa correspondência foi encontrada.
Links úteis
🔗 Expressões regulares para iniciantes
Meu nome é Vitaly Kotov e eu sei um pouco sobre expressões regulares. Abaixo, explicarei os fundamentos do trabalho com elas...
🔗 Expressões regulares (regexp) — o básico
Expressões regulares são um mecanismo para busca e substituição de texto. Em uma string, arquivo, vários arquivos...
🔗 ⏩Extraindo dados de catálogo de equipamentos industriais
Exemplo de uso de regex na extração de dados de um catálogo de equipamentos industriais
🔗 ⏩Extração de dados do recurso Booking.com
Exemplo de uso de regex na extração de dados do recurso Booking.com
🔗 ⏩Busca de páginas de contatos
Exemplo de uso de regex na extração de dados de páginas de contatos