J'essaye de sélectionner des lignes spécifiques dans un document html en utilisant regex.
Je cherche à sélectionner des lignes commençant par Voici une partie du html que j'ai Voici ce que j'ai fait jusqu'à présent:
Je viens de commencer à apprendre les expressions régulières, donc je suis assez nouveau dans ce domaine. et qui ne contiennent PAS dans le href les caractères ../ <script type="text/javascript" src="/js/IP_Master_PT_RTL.master.js"></script>
<link rel="stylesheet" type="text/css" href="../global.design-editor.com/v8/main.min1024.css?v=_STAGING-Publisher_20180327.1" />
<link rel="stylesheet" type="text/css" href="../fonts.googleapis.com/earlyaccess/alefhebrew.css" />
<link rel="stylesheet" type="text/css" href="ad-systems368c.css?v=4701716615" />
3 Réponses :
En utilisant JavaScript dans le navigateur, vous pouvez simplement rechercher tous les éléments , puis les filtrer en fonction de l'attribut href
<script type="text/javascript" src="/js/IP_Master_PT_RTL.master.js"></script> <link rel="stylesheet" type="text/css" href="../global.design-editor.com/v8/main.min1024.css?v=_STAGING-Publisher_20180327.1" /> <link rel="stylesheet" type="text/css" href="../fonts.googleapis.com/earlyaccess/alefhebrew.css" /> <link rel="stylesheet" type="text/css" href="ad-systems368c.css?v=4701716615" />
let allLinks = document.querySelectorAll('link');
let filteredLinks = Array.from(allLinks)
.filter(el => el.getAttribute("href").startsWith("../") == false);
console.log(filteredLinks);
const links = [...document.getElementsByTagName('link')];
const newLinks = links.filter(link => !link.outerHTML.includes('../'))
console.log(newLinks)
.includes interceptera cette séquence n'importe où dans la chaîne. En fait, n'importe où dans le HTML entier pour cet élément.
Oui vous avez raison. Je ne connaissais pas getAttribute . Votre solution est bien meilleure
Peut-être qu'il / elle analyse des fichiers alors il / elle a besoin de ragex. Voici donc ma solution ...
Je suis également nouveau sur ragex, mais cela pourrait fonctionner pour vous.
<link\s*.*href\=\"[^(\.\.\/)].*\".*/>
vérifiez également ce constructeur de ragex , amusez-vous bien ..
C'est r e gex - pour l'expression régulière. Et ce modèle ne correspondra pas à href = '.. / somevalue' à cause des guillemets. La classe de caractères à l'intérieur 1. n'a pas besoin d'échappements 2. ne correspondra pas uniquement à ../ mais aussi à . ou . / ou / . Cela peut également correspondre à quelque chose que vous n'aviez pas du tout prévu, par exemple avec le HTML '
'
"J'essaie de sélectionner des lignes spécifiques dans un document html à l'aide de regex." Ne le faites pas , cela ne peut pas être fait de manière fiable. Si vous avez besoin de travailler avec HTML, utilisez un analyseur HTML.
si vous faites cela dans un navigateur en utilisant javascript, vous pouvez utiliser dom apis pour lire tous les éléments de lien, puis faire une correspondance régulière ou une correspondance de chaîne pour la vérification href. exemple:
document.querySelectorAll ('link'). forEach ((linkelement, i) => {console.log (linkelement.attributes ['href']);})