[JS][RegXP] Chercher et remplacer de façon stricte

Chercher et remplacer de façon stricte [JS][RegXP] - HTML/CSS - Programmation

Marsh Posté le 14-03-2008 à 11:00:07    

Salut,
 
Je cherche a faire quelque chose en RegXP mais je ny arrive pas trop.
J'ai un texte du type :

Code :
  1. chaine = "Salut le chat <a href="blop.html">est en</a> mousse, mais le chat est mort aussi. Le Chien est du coup malade et est en arret maladie.";


 
1. Il faut que j'arrive a prendre tous les mots de cette chaine SEULEMENT si ce mot n'est pas un lien.
 
2. J'aimerai remplacer tous les "est en" par : *** et les "est" par : +++  
 
Si qqun peut m'aider parce que la  :(

Reply

Marsh Posté le 14-03-2008 à 11:00:07   

Reply

Marsh Posté le 14-03-2008 à 11:28:12    

Code :
  1. chaine = chaine.replace(/<a.*?a>/g, '');
  2. chaine = chaine.replace(/est en/g, '***');
  3. chaine = chaine.replace(/est/g, '+++');


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 14-03-2008 à 11:34:11    

j'avais trouvé ca :

Code :
  1. chaine = chaine.replace(/est en/g, '***');


 
Sauf que je passe par une fonction de ce type :
 

Code :
  1. function str_replace(search, replace, str) {
  2. var chaine = str;
  3. chaine = chaine.replace(/\b + search + \b/gi, replace);
  4. return chaine;
  5. }


 
derriere j'aimerai déclenché pour faire :  

Code :
  1. return str_replace('est en', '***', chaine)

Reply

Marsh Posté le 14-03-2008 à 14:17:50    

Rien a faire ca passe pas :(
Je sais pas comment faire la.

Reply

Marsh Posté le 14-03-2008 à 14:24:30    

[code]
function str_replace(search, replace, str) {
   return str.replace(new RegExp('\\b'+search'\\b', 'gi'), replace)
}

Reply

Marsh Posté le 14-03-2008 à 14:28:14    

Erreur dans ton code et en plus ca ne fonctionne pas, j'ai essayé.

Reply

Marsh Posté le 14-03-2008 à 14:38:41    

vire les \\b ça sert à rien.
 
Mais je comprends toujours pas l'intérêt de ré-écrire une fonction qui existe déjà.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 14-03-2008 à 14:58:06    

Je veux pouvoir remplacer certaines données par d'autres dans un grand paragraphe (cf exemple du haut).

Reply

Marsh Posté le 14-03-2008 à 15:13:53    

mais ça j'ai bien compris :/ :/ :/
tu noteras d'ailleurs que ma 1ere réponse fait tout ce que tu demandais.
 
Maintenant ma dernière question est:
Quelle est l'intérêt d'écrire une fonction str_replace alors qu'on dispose déjà de String.replace :??:


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 14-03-2008 à 15:31:31    

anapajari a écrit :

mais ça j'ai bien compris :/ :/ :/
tu noteras d'ailleurs que ma 1ere réponse fait tout ce que tu demandais.
 
Maintenant ma dernière question est:
Quelle est l'intérêt d'écrire une fonction str_replace alors qu'on dispose déjà de String.replace :??:


 
Tas réponse me donne cela pour du "static" entre guillemet.
Je refais une fonction car je veux modifier des choses de façon dynamique, je sort d'un flux Json des données a remplacer par d'autres dans ce paragraphe.

Reply

Marsh Posté le 14-03-2008 à 15:31:31   

Reply

Marsh Posté le 14-03-2008 à 15:50:40    

nycius a écrit :

Tas réponse me donne cela pour du "static" entre guillemet.
Je refais une fonction car je veux modifier des choses de façon dynamique, je sort d'un flux Json des données a remplacer par d'autres dans ce paragraphe.


Merci de m'expliquer la difference entre

Code :
  1. String.replace( pattern, replaceString)


et

Code :
  1. str_replace(pattern, replaceString, String)


Perso j'en vois pas des masses et je ne comprends donc pas l'intérêt de la fonction "refaite"


Message édité par anapajari le 14-03-2008 à 15:50:49

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 14-03-2008 à 15:59:08    

Je veux pouvoir gérer le mot a chercher via une variable.
Tu cherches un autre débat la, je men fou d'avoir la vrai ou la fausse, je veux juste arriver a pouvoir remplacer correctement mon pattern, sachant que ce pattern ne sera pas défini a la main mais via une variable dynamique.

Reply

Marsh Posté le 14-03-2008 à 16:05:47    

nycius a écrit :

Je veux pouvoir gérer le mot a chercher via une variable.
Tu cherches un autre débat la, je men fou d'avoir la vrai ou la fausse, je veux juste arriver a pouvoir remplacer correctement mon pattern, sachant que ce pattern ne sera pas défini a la main mais via une variable dynamique.


faut passer le mot en regexp avec l'attribut 'g' pour global :  
 
 
mastring = mastring.replace(new RegExp(patter,'gi'), replaceString);

Reply

Marsh Posté le 14-03-2008 à 16:08:34    

je cherche pas un autre débat, c'est juste que je ne comprends pas en quoi String.replace ne te convient pas [:spamafote]
Tu peux très bien faire quelque chose comme ça avec String.replace

Code :
  1. var patterns = [
  2.   { 'pattern' : '<a.*?a>', 'replace': '', 'options': 'gi'},
  3.   { 'pattern' : 'est en', 'replace': '***', 'options': 'g'},
  4.   { 'pattern' : 'est', 'replace': '+++', 'options': 'g'}
  5. ];
  6. for (i in patterns){
  7.   chaine = chaine.replace(new RegExp(patterns[i].pattern, patterns[i].options), patterns[i].replace);
  8. }
 

edit: [:benou_grilled] maxi-grilled

Message cité 1 fois
Message édité par anapajari le 14-03-2008 à 16:09:08

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 14-03-2008 à 16:11:17    

Gatsu35 > en fait c'est tout mon systeme qui merdouille.
Je vois pas comment je vais pouvoir faire ce que je veux :(

Reply

Marsh Posté le 14-03-2008 à 16:20:29    

bah si tu veux passer par ta string replace :  
 
function str_replace(pattern, replaceString, string) {
    return string.replace(new RegExp(patter,'gi'), replaceString);
}
ça ca fera l'affaire, après comme on connait rien de ton bouzin on peut pas plus t'aider. ET si ton systeme merdouille, revoit la conception

Reply

Marsh Posté le 14-03-2008 à 16:22:38    

anapajari a écrit :

je cherche pas un autre débat, c'est juste que je ne comprends pas en quoi String.replace ne te convient pas [:spamafote]
Tu peux très bien faire quelque chose comme ça avec String.replace

Code :
  1. var patterns = [
  2.   { 'pattern' : '<a.*?a>', 'replace': '', 'options': 'gi'},
  3.   { 'pattern' : 'est en', 'replace': '***', 'options': 'g'},
  4.   { 'pattern' : 'est', 'replace': '+++', 'options': 'g'}
  5. ];
  6. for (i in patterns){
  7.   chaine = chaine.replace(new RegExp(patterns[i].pattern, patterns[i].options), patterns[i].replace);
  8. }


 
edit: [:benou_grilled] maxi-grilled


 
 
Merci anapajari ca m'a bcp aidé ca.
 
Thanks aussi Gatsu35

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed