Utilisation des expressions régulières
Informations générales
Dans A-Parser, on utilise des expressions régulières compatibles Perl/JavaScript, qui peuvent être utilisées :
- Lors de la collecte de données d'informations arbitraires à partir de n'importe quel site
- Dans le constructeur de requêtes pour extraire ou remplacer une partie de la requête
- Dans le constructeur de résultats pour transformer n'importe quel résultat
- Lors de l'utilisation des filtres
- Dans le constructeur de régulières
- Lors de la vérification de la disponibilité de la page suivante dans le scraper
Net::HTTP
Une documentation détaillée sur les expressions régulières peut être trouvée dans les sources suivantes :
- Expressions régulières sur Wikipédia
- Encyclopédie universelle des expressions régulières standard PCRE
- Sujet Partageons nos regex sur le forum
Dans A-Parser, il est possible de traiter n'importe quel résultat à l'aide d'une expression régulière, pour cela l'option Parse custom result (Utiliser une regex) est utilisée :

Particularités d'utilisation et drapeaux
- Les expressions régulières sont écrites sans délimiteurs
// - Les drapeaux suivants sont pris en charge :
- i - recherche insensible à la casse
- s - le point inclut tous les caractères, y compris les sauts de ligne
- g - recherche ou remplacement global
De plus, il est possible de spécifier un drapeau directement dans la regex, par exemple la recherche du mot test dans chaque ligne de tout le texte (ou du code de la page, selon l'endroit où la regex est appliquée) en utilisant le drapeau m (multi-ligne - les symboles ^ et $ fonctionnent respectivement comme début et fin de ligne) :
(?m)^(.+?test.+?)$
Extraction d'informations arbitraires

À l'aide de l'option Parse custom result (Utiliser une regex) ou du Constructeur de résultats, il est possible d'utiliser des expressions régulières pour extraire des informations arbitraires des résultats de la collecte de données, par exemple du code source HTML des pages ou des résultats déjà préparés
- Dans Parse result (Appliquer à), on choisit le résultat du scraper, cela peut être un résultat simple ou un tableau
- L'expression régulière est indiquée sans délimiteurs, suivie de la possibilité de spécifier un drapeau
- Dans Result type (Type de résultat), on indique le type de résultat -
Flat(résultat simple) ouArray(tableau). Si un tableau est choisi comme résultat source ou si le drapeau g de l'expression régulière est utilisé, le résultat sera toujours enregistré dans un tableau. Dans le champ Name (Nom), on indique le nom du tableau - Chaque parenthèse capturante de l'expression régulière peut être enregistrée comme un élément distinct, le nom de l'élément est inscrit dans le champ correspondant $1 to, $2 to... - où le chiffre indique le numéro de la parenthèse capturante
- Dans le champ RegEx (Regex), on peut utiliser le moteur de templates, ce qui permet d'utiliser la requête comme partie de l'expression régulière
Les nouveaux résultats créés peuvent être utilisés lors du formatage des résultats, dans le constructeur de résultats, dans le filtrage et la déduplication des résultats ou dans l'option suivante Parse custom result (Utiliser une regex).
Cette option est similaire au constructeur de résultats lors de l'utilisation de RegEx Match
Exemple de collecte de liens d'images à partir du code HTML source

Pour résoudre cette tâche, nous utilisons le scraper
Net::HTTP pour obtenir le code source de la page.
Nous appliquons à $data (la page téléchargée) une expression régulière avec les drapeaux isg, le résultat est enregistré dans les éléments src du tableau images.
Dans le format de résultat, nous indiquons d'afficher tous les éléments src séparés par un saut de ligne.
À l'issue de la collecte de données pour la requête http://a-parser.com/, nous obtiendrons la liste suivante dans le fichier de résultat :
/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
Télécharger l'exemple
Comment importer l'exemple dans 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=
Constructeur d'expressions régulières
À partir de la version 1.2.78, le Constructeur d'expressions régulières a été ajouté.
Vous pouvez le trouver dans l'onglet Tools -> Regex Builder. Il est également possible d'envoyer le code des pages obtenu directement depuis le Test de collecte. Pour cela, il faut activer le mode debug et cliquer sur le lien Go to RegEx Builder.

Dans le constructeur, il est possible de choisir le langage de programmation dans lequel les expressions régulières obtenues seront utilisées.
Pour travailler avec le constructeur, il faut insérer le texte source dans le champ de gauche (ou il sera inséré automatiquement depuis le Test de collecte lors du passage par Go to Regex Builder). À droite, nous configurons les paramètres de la future expression régulière.
Pour composer une expression régulière simple (par exemple, pour obtenir le titre), il suffit d'indiquer les éléments nécessaires de l'expression régulière.
- Dans le champ Before group (Avant le groupe), nous inscrivons les caractères qui se trouvent avant l'information dont nous avons besoin
- Dans le champ After group (Après le groupe), nous inscrivons les caractères qui se trouvent après les données nécessaires
- Dans le champ Le groupe commence par, nous indiquons les caractères par lesquels la chaîne recherchée doit commencer
- Dans le champ Group ends with (Le groupe se termine par), nous indiquons les caractères qui doivent se trouver à la fin de la chaîne recherchée

Comme on peut le voir sur la capture d'écran ci-dessus, nous composons une expression régulière qui sélectionnera le title du site. Avant le groupe, nous mettons <title> et après le groupe </title>, et aussi, pour l'exemple, nous indiquons que la chaîne recherchée commence par la lettre W.
Pour un test complet de l'expression régulière obtenue, il est possible d'activer les drapeaux nécessaires : g, s et i.
Il est également possible de composer des expressions régulières plus complexes contenant 2 groupes ou plus.
Pour l'exemple, essayons de composer une expression régulière pour collecter tous les liens et ancres dans une liste <li>. Pour cela, nous devons activer le drapeau g et ajouter un autre groupe de recherche, car le premier groupe contiendra les liens et le second les ancres.

En définissant les paramètres nécessaires pour les deux groupes, nous obtenons l'expression régulière :
<li><a href="(.+?)">(.+?)<\/a
Pour vérifier l'expression régulière, appuyez sur le bouton Test :

Après l'exécution de l'expression régulière, le résultat de son travail s'affiche en bas : la chaîne complète et les groupes capturés. En double-cliquant sur n'importe quel élément du tableau de résultat, le texte initial défile jusqu'à l'emplacement de cette correspondance.
Liens utiles
🔗 Les expressions régulières pour les débutants
Je m'appelle Vitaliy Kotov et je m'y connais un peu en expressions régulières. Dans cet article, je vais expliquer les bases de leur fonctionnement...
🔗 Expressions régulières (regexp) — les bases
Les expressions régulières sont un mécanisme de recherche et de remplacement de texte. Dans une chaîne, un fichier, plusieurs fichiers...
🔗 ⏩Collecte d'un catalogue d'équipements industriels
Exemple d'utilisation des regex dans la collecte d'un catalogue d'équipements industriels
🔗 ⏩Collecte de données sur le site Booking.com
Exemple d'utilisation des regex dans la collecte de données sur le site Booking.com
🔗 ⏩Recherche de pages de contact
Exemple d'utilisation des regex dans la collecte de pages de contact