Показать сообщение отдельно
  #1 (permalink)  
Старый 03.02.2015, 11:41
Аватар для Momon
Аспирант
Отправить личное сообщение для Momon Посмотреть профиль Найти все сообщения от Momon
 
Регистрация: 02.12.2014
Сообщений: 72

Регулярное выражение (regexp) для поиска
Для поиска в массиве из нескольких тысяч строк использую такое регулярное выражение:
/(?=.*(\s|^|-)слово1)(?=.*(\s|^|-)слово2)(?=.*(\s|^|-)слово3)/.test.arr[i]
Оно использует упреждение для того чтобы найти в массиве те строки в которых встречаются все слова из запроса пользователя в любом порядке, причём поиск совпадения каждого конкретного слова идёт с его начала, а не откуда нибудь из середины.

Проблема в том, что когда пользователь вводит два повторяющихся слова "баден баден" такое регулярное выражение, понятное дело, находит совпадение в строке массива из одного единственного слова "баден". Как можно это подправить? Ну, чтобы не находило. Насколько я понял нужно как то запомнить то, что уже нашли.

Последний раз редактировалось Momon, 03.02.2015 в 11:56.
Ответить с цитированием