J'essaie de créer une expression rationnelle pour m'aider à analyser de nombreux fichiers robots.txt. Je cherche à savoir si des agents utilisateurs spécifiques ont été interdits.
Les fichiers ressemblent à peu près aux siens mais peuvent varier un peu avec l'espace blanc :
User-agent: *
Disallow: /next/
User-agent: *
Disallow: /mshots/v1/
# har har
User-agent: *
Disallow: /activate/
User-agent: *
Disallow: /wp-login.php
User-agent: *
Disallow: /signup/
User-agent: *
Disallow: /related-tags.php
Jusqu'à présent, j'ai trouvé cette regex :
user-agent.*:(.*$)
Avec les options définies pour le multiligne et la casse.
Cela fonctionne très bien pour la partie user-agent de mon exigence, mais maintenant je dois faire correspondre tout dissallow
un mot qui vient avant un autre user-agent
est déclaré. J'ai essayé de faire correspondre $
y \r\n
mais je n'arrive pas à trouver comment continuer le match après que le $
. Tout motif que j'ajoute ensuite ne semble pas fonctionner. Par exemple :
user-agent.*:(.*$)(^.*disallow)
J'essaie de faire correspondre le saut de ligne et de l'interdire, mais cela ne correspond pas. De plus, je ne suis pas sûr de savoir comment terminer la correspondance avant l'élément user-agent
et travailler encore sur la règle de la dernière déclaard.
Quelqu'un peut-il m'indiquer la bonne direction ?