2
votes

Existe-t-il une expression Regex pour correspondre à toutes celles qui ne sont pas entre guillemets

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.


2 commentaires

Utilisez replace , c'est-à-dire str.replace (/ "[^"] * "\ s * /," ")


Ou, s.split (/ \ s * "[^"] * "\ s * /). Join (" ") .trim ()


4 Réponses :


0
votes

Voici un moyen ...

var str = `Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.`

console.log(str.replace(/\"[a-z]{1,}\"/g, ''))


0 commentaires

0
votes

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


0 commentaires

0
votes

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,''));


0 commentaires

0
votes

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


0 commentaires