MrPierre Posted January 12, 2011 Share Posted January 12, 2011 Bonjour bonjour, Aujourd'hui je cherche à faire quelque chose que même en chipotant pendant des heures je me sais incapable de faire. Voici l'affaire : je dois parser un texte contenant des balises, sauf que je dois uniquement garder certaines balises, et pas d'autres, et que tout le texte doit fiche le camp. Donc dans cette phrase : "Bonjour, <a>je suis</a> une belle <d>chaîne</d> pleine de <c>balises</c>. Comment vas-tu t'y <b>prendre</b> ?" J'ai bien fait exprès de mettre les balises <c> avant les <b> pour montrer que chaque balise peut être rencontrée n'importe où. On va dire que je ne veut obtenir que les <a> et ce qu'il y a entre, et que les <c>. Le résultat dans ce cas serais donc "<a>je suis</a><c>balises</c>". Des idées là-dessus (je crois que ça va être compliqué ) ? Merci d'avance ! Link to comment Share on other sites More sharing options...
SStephane Posted January 13, 2011 Share Posted January 13, 2011 ça peut te donner une idée, mais il y a surement mieux à faire, pas très inspiré en ce début d'année var str = "Bonjour, <a>je suis</a> une belle <d>chaîne</d> pleine de <c>balises</c>. Comment vas-tu t'y <b>prendre</b> ?" var oreg = /<[a|c]{1}[^>]*>[^<]*?<\/[a|c]{1}[^>]*>/gi; var arr = str.split(oreg); for(var a in arr) str = str.replace(arr[a],''); alert(str); Link to comment Share on other sites More sharing options...
MrPierre Posted January 15, 2011 Author Share Posted January 15, 2011 Ah oui pas mal, j'ai moi-même essayé mais avec exec() : var str = "c'est <a>parce</a> que je <b>cherche</b> à ne <c>garder</c> que <d>certaines</d> balises",balisesAGarder = ['a','d'],reg = new RegExp('[\\s\\S]*?(<('+balisesAGarder.join('|')+')>[\\s\\S]*?<\\/\\2>)[\\s\\S]*?','g'),res = null,newStr = "";while(res = reg.exec(str)) { newStr += res[1];}alert(newStr); // <a>parce</a><d>certaines</d> C'est un peu lourd à cause du while (vaut mieux éviter de l'employer en continu et ne l'enclencher que via un événement). Merci Steph, a+ Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now