Webmaster Hub: Emploi subtil des regex - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Emploi subtil des regex Question pour javascripteurs balaises

#1 L'utilisateur est hors-ligne   MrPierre 

  • Groupe : Webmaster Régulier
  • Messages : 95
  • Inscrit(e) : 16-septembre 10
  • Genre:Homme
  • Localisation:Belgique

Posté 12 janvier 2011 - 23:30

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é :p) ? Merci d'avance !
Des connaissances dans l'un ou l'autre domaine? Créez des articles rémunérés sur www.questmachine.org !
0

#2 L'utilisateur est hors-ligne   SStephane 

  • Groupe : Fondateur
  • Messages : 460
  • Inscrit(e) : 06-février 09
  • Genre:Homme
  • Localisation:Grabels

Posté 13 janvier 2011 - 12:41

ç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);


_AT_Montpellier
L'héroïsme, c'est la seule manière de devenir célèbre quand on a pas de talent (l'homme aux initiales douteuses)
Venez tester votre niveau de compétence en PHP :-)
0

#3 L'utilisateur est hors-ligne   MrPierre 

  • Groupe : Webmaster Régulier
  • Messages : 95
  • Inscrit(e) : 16-septembre 10
  • Genre:Homme
  • Localisation:Belgique

Posté 15 janvier 2011 - 13:31

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+ :D
Des connaissances dans l'un ou l'autre domaine? Créez des articles rémunérés sur www.questmachine.org !
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)