Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2016, 16:03
Новичок на форуме
Отправить личное сообщение для dev.div0 Посмотреть профиль Найти все сообщения от dev.div0
 
Регистрация: 26.08.2016
Сообщений: 4

Регулярка на JS для поиска предложений, содержащих слово
Здравствуйте.
Подскажите регулярку для поиска предложений в русском тексте по определенному слову.
Считаю что предложение это часть текста начинающееся с большой буквы и заканчивающееся точкой. Варианты сокращений типа "и т.д." или вообще сокращения пока что не учитываю.
Впрочем, возможно у кого-то в копилке есть вариант и с обработкой сокращений.
Прошу помочь.
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2016, 16:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,219

Сообщение от dev.div0
Подскажите регулярку для поиска предложений в русском тексте по определенному слову.
Разбей текст на "предложения", используя точку как разделитель. А потом в цикле проверяй, какое "предложение" содержит исходное слово...
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2016, 17:33
Новичок на форуме
Отправить личное сообщение для dev.div0 Посмотреть профиль Найти все сообщения от dev.div0
 
Регистрация: 26.08.2016
Сообщений: 4

плохо это - 3 действия получается. Так-то у меня и работает (как предложил ksa). Хотелось бы регуляркой.
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2016, 17:42
Новичок на форуме
Отправить личное сообщение для dev.div0 Посмотреть профиль Найти все сообщения от dev.div0
 
Регистрация: 26.08.2016
Сообщений: 4

есть текст. Получаю массив предложений через текст.split('.') потом в цикле пробегаюсь по каждому из предложений
function findSentence(){
        var selectedSentence;
        var sentenceIndex = -1;
        for(var i=0;i<sentences.length;i++){
            var sentence = sentences[i];
            var wordExists = sentence.indexOf(currentWord) > 0;
            if(wordExists){
                selectedSentence = sentence;
                sentenceIndex = i;
                break;
            }
        }
        return {sentenceIndex: sentenceIndex, sentence:selectedSentence};
    }
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2016, 19:51
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

dev.div0, Здравствуйте,
так подойдет?
var text="Предложение номер раз. Второе предложение. Еще какой-то текст номер 3.";
var res=text.match(/[А-Я][^\.]+номер[^\.]+\./g);
alert("всего: "+res.length+"\n"+res);
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2016, 20:00
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Manyasha,
Букву Ё забыла
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2016, 20:04
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

А вообще через lodash все это решается в одну строчку, а не как у ТС в 14
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2016, 10:52
Новичок на форуме
Отправить личное сообщение для dev.div0 Посмотреть профиль Найти все сообщения от dev.div0
 
Регистрация: 26.08.2016
Сообщений: 4

Спасибо за ответы.
([А-Я]{1}[^.]+[.]{1})

Вот эта регулярка выделяет все предложения. Ошибается при сокращениях, троеточиях, ссылках в html коде (<a href="http://mysite.com">)

https://regex101.com/r/iR0qL4/2 - тестирование

Сообщение от destus Посмотреть сообщение
А вообще через lodash все это решается в одну строчку, а не как у ТС в 14
Интересная штучка. А Вы могли бы чуть поподробнее в контексте моей задачи осветить.
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2016, 11:28
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
А Вы могли бы чуть поподробнее в контексте моей задачи осветить.
а что именно осветить? Алгоритм вам написали, осталось выдернуть нужные методы из апи и зачейнить их
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2016, 12:12
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

Сообщение от dev.div0
Впрочем, возможно у кого-то в копилке есть вариант и с обработкой сокращений.
ты как себе это представляешь?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не разобрался с применением js и куки для нескольких select tart Общие вопросы Javascript 24 01.09.2017 10:09
виджет, только сторона клиента (JS, JQUery, работа с датами, масштабирование) eugen35 Работа 4 31.07.2014 09:50
Java-скрипт для поиска. 2oo Общие вопросы Javascript 25 11.12.2010 13:10
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Регулярное выражение для поиска смайлов. NightmareZ Общие вопросы Javascript 13 23.06.2009 13:12