2016-12-01 2 views
0

Я хочу найти последнее совпадающее слово в предложении с использованием регулярного выражения. Я искал эту функциональность и нашел отрицательный результат.Отрицательный Lookahead, чтобы найти слово с латским соответствием в предложении

Ex: Для того, чтобы найти «Foo» в «Это Foo не такой же, как Foo»

Здесь я должен найти последний согласованный индекс «Foo» «s. Для этого я использую функцию поиска javascript с поиском (regex), где regex is foo (?!. * Foo)

Проблема заключается в том, что поиск не возвращает правильный индекс (это может быть проблема с регулярным выражением). Эта функция такая же, как и Функция поиска хром, где вверх стрелка находит предыдущий матч. Поэтому я хочу знать, нужно ли мне менять свое регулярное выражение?

Благодаря

+2

Пожалуйста, добавьте код, который вы имеете. Посмотрите [здесь] (https://jsfiddle.net/272j97cd/), '28' выглядит правильно для меня. –

+0

спасибо Wiktor еще раз :) Я использовал подстроку неправильно (подстрока, чтобы отменить последнее предыдущее совпадающее слово) – Bhuwan

+0

@ WiktorStribiżew по этой причине я просто предложил использовать 'String.prototype.lastIndexOf()' –

ответ

1

Чтобы найти индекс последнего соответствуют "Foo" «s. Вы можете использовать String.prototype.lastIndexOf()

var lastIndex = 'This foo is not same as the foo'.lastIndexOf('foo'); 
 

 
console.log(lastIndex);

+0

Что делать, если OP нужно найти 'foo', это всего лишь целое слово? –

+1

http://regexr.com/3eplj работает отлично. Они используют функцию javascript match(), но мне нужен индекс совпадающего слова, поэтому с помощью функции поиска – Bhuwan

+0

Если 'foo' - единственное целое слово, то возвращаемый последний индекс будет '0' вместо' -1', который возвращается, если не найден. –

Смежные вопросы