2015-06-21 2 views
-1

Мне нужно найти все имя в двойных строках, которые не следует Mrs. Пример:regex javascript найти все nam не следующие "Mrs"

Mr "Green" met Mrs "Smith" yesterday. Mrs "Smith" also met Mr "Brown" and "Peter". 

Точный результат будет: Green, Brown, Peter

Шаблон:

/(?!^Mrs)"(?:""|[^"])*"/g 

Я не работает. Что такое шаблон регулярного выражения для решения этой проблемы в javascript?

ответ

1

Вы можете использовать это регулярное выражение:

/\b(?!Mrs)\w+\s+"([^"]+)"/gi 

RegEx Demo

Код:

var re = /\b(?!Mrs)\w+\s+"([^"]+)"/gi; 
var str = 'Mr "Green" met Mrs "Smith" yesterday. Mrs "Smith" also met Mr "Brown" and "Peter"s'; 
var m; 
var result = [] 
while ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) 
     re.lastIndex++; 
    result.push(m[1]); 
} 

console.log(result); 
// [Green, Brown, Peter] 
+1

Благодарим за Ваш ответ. Он фиксирует слово «и» в «Брауне» и «Петре». Мне также нужны двойные кавычки. –

+1

Чтобы включить двойные кавычки, также используйте 'var re =/\ b (?! Mrs) \ w + \ s + (" [^ "] +")/gi; 'и нет, он не записывает' и 'в' m [ 1] '. Посмотрите на показанный код. – anubhava

1

Попробуйте RegEx:

\b(?!Mrs)\w+\s+"(.*?)" 

Demo

Используйте его как:

var str = 'Mr "Green" met Mrs "Smith" yesterday. Mrs "Smith" also met Mr "Brown" and "Peter".', m, result = [], re = /\b(?!Mrs)\w+\s"(.*?)"/gi; 

while ((m = re.exec(str)) !== null) { 
    m.index === re.lastIndex && re.lastIndex++; 
    result.push(m[1]); 
} 

// Result is: ["Green", "Brown", "Peter"] 
Смежные вопросы