MrPierre Posté 12 Janvier 2011 Posté 12 Janvier 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 !
SStephane Posté 13 Janvier 2011 Posté 13 Janvier 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);
MrPierre Posté 15 Janvier 2011 Auteur Posté 15 Janvier 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+
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant