C'est plus une question de puzzle pour ma curiosité qu'autre chose. Je suis à la recherche d'une seule substitution d'expression régulière qui convertira les esperluettes échappées en entités en esperluettes non échappées uniquement dans les attributs href d'un fichier html. Par exemple:Expression simple perl pour supprimer les esperluettes échappées de l'intérieur des attributs href mais pas ailleurs
<a href="http://example.com/index.html?foo=bar&baz=qux&frotz=frobnitz">
Me, myself & I</a>
se convertiraient:
<a href="http://example.com/index.html?foo=bar&baz=qux&frotz=frobnitz">
Me, myself & I</a>
Maintenant, je peux le faire dans plusieurs déclarations, mais je suis curieux de savoir si les gourous de regex perl peuvent le faire en un.
Le plus proche que je suis venu jusqu'ici est la regex suivante qui ne fonctionne pas parce que lookbehinds ne peut pas être de longueur variable. Bien sûr, cela pourrait ne pas fonctionner même s'ils étaient autorisés, je ne suis pas sûr.
s/(?<=href=".*?)&(?=.*?")/&/g;
Merci.
Jonathan, j'aime ta réponse. J'arrivais avec une regex similaire quand je jouais avec le problème mais je ne pensais pas le laisser tomber dans une boucle. Je suis toujours curieux mais s'il y a un moyen avec juste une seule regex. Merci! –