Je travaille sur une expression régulière qui regarde tout sauf les informations entre guillemets. Un exemple serait:
Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.
Changerait en
Lorem ipsum sit amet, élite adipeuse
J'ai déjà essayé
.*(?=".*").*
et
`[^"]. * [^ "]
Aucun des deux n'a fonctionné, j'apprécierais donc votre aide.
4 Réponses :
Voici un moyen ...
var str = `Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.` console.log(str.replace(/\"[a-z]{1,}\"/g, ''))
Je ferais quelque chose dans ce sens. Il gère le cas où la phrase commence ou se termine par un guillemet.
var str = '"Lorem" ipsum "dolor" sit amet, "consectetur", adipiscing "elit."'; var regExp = /(?:^|\W)(\".+?\")(?:\W|$)/g; var res = str.replace(regExp, " ").trim(); console.log(res);
RegExp expliqué:
(?: ^ | \ W)
- groupe non capturant du début de la chaîne ou juste d'un espace (techniquement un " caractère autre qu'un mot "- peut être une ponctuation, un crochet, etc.)
(\". +? \ ")
- n'importe quoi entre "
( y compris les guillemets eux-mêmes)
(?: \ W | $)
- identique au premier, mais en vérifiant la fin d'une chaîne à la place
g
flag - vérifie toutes les occurrences d'un modèle correspondant
Essayez ceci, non gourmand (". *?")
correspond à deux citations et le moins possible entre elles.
var a ='Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.'; console.log(a.replace(/".*?"/g,''));
J'espère vous aider:
var str = 'Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.' ; var res = '' ; var patt = /[,\w]+(?![^" ]*")/g ; while ( (arr = patt.exec(str)) != null) { res += arr[0] + ' ' ; } console.log( res ) ;
/[,\w]+(?![^" ]*")/g
Utilisez
replace
, c'est-à-direstr.replace (/ "[^"] * "\ s * /," ")
Ou,
s.split (/ \ s * "[^"] * "\ s * /). Join (" ") .trim ()