Есть ли выражение Regex, чтобы соответствовать каждому, что не в кавычках - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над регулярным выражением, которое просматривает все, кроме информации в цитатах.Примером может быть:

Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.

Изменится на

Lorem ipsum sit amet, adipiscing elit

Я уже пробовал

.*(?=".*").*

и

`[^"]. * [^ "]

ни сработало, поэтому я буду признателен за помощь.

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Я надеюсь помочь вам:

/[,\w]+(?![^" ]*")/g

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 ) ;
0 голосов
/ 06 февраля 2019

Я бы сделал что-нибудь в соответствии с этим.Он обрабатывает случай, когда предложение начинается или заканчивается кавычкой.

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 объяснил:

(?:^|\W) - группа без захвата либо начала строки, либо просто пробела (технически это «не слово-символ» -может быть пунктуацией, скобкой и т. д.)

(\".+?\") - все, что находится между " (включая сами кавычки)

(?:\W|$) - аналогично первому, но проверяетсявместо конца строки

g flag - проверить все вхождения соответствующего шаблона

0 голосов
/ 06 февраля 2019

Попробуйте, не жадные (".*?") соответствуют две цитаты и как можно меньше между ними.

var a ='Lorem ipsum "dolor" sit amet, "consectetur" adipiscing elit.';
console.log(a.replace(/".*?"/g,''));
0 голосов
/ 06 февраля 2019

Вот путь ...

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

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