Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2016, 21:36   #1
kata.m
 
Регистрация: 02.05.2016
Сообщений: 5
По умолчанию Регулярные выражения(в PHP)

Задание такое:
Описать с помощью регулярных выражений поиск двух слов в тексте, если известно количество слов между ними.
Находила вариант. Не работает: /\b(?:word1\W+(?:\w+\W+){0,int}?word 2|word2\W+(?:\w+\W+){0,int}?word1)\ b/

И сама писала. Очень странно ищет, например, расстояние между нужными словами в тексте 6 слов, а если вводишь в поиске, при тех же словах, всего 2, то все равно находит: /$query(\s*.+){1,$int}$query1/
kata.m вне форума Ответить с цитированием
Старый 02.05.2016, 22:07   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

https://regex101.com/r/hX7eN5/1
как вариант
Код:
\bслово1\s+((\w+\s+){слов между ними})слово2\b
не забудь только экранировать символы в словах, чтоб не сломалось выражение
GreenWizard вне форума Ответить с цитированием
Старый 03.05.2016, 18:41   #3
kata.m
 
Регистрация: 02.05.2016
Сообщений: 5
По умолчанию

Спасибо больше, на примере вашего текста все работает, а вот в таком случает не очень-то, или я чего-то не понимаю.
https://regex101.com/r/hX7eN5/1

Последний раз редактировалось kata.m; 03.05.2016 в 19:02.
kata.m вне форума Ответить с цитированием
Старый 03.05.2016, 18:48   #4
kata.m
 
Регистрация: 02.05.2016
Сообщений: 5
По умолчанию

Спасибо, но вот в таком случае не работает. Почему?
Изображения
Тип файла: jpg Screenshot_1.jpg (37.6 Кб, 18 просмотров)
kata.m вне форума Ответить с цитированием
Старый 03.05.2016, 19:46   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

\w, вроде, только англ. понимает, поэтому попробуй заменить на [\wа-яА-Я]
ещё может понадобиться замена \s на [\s\,\. и др. символы препинания], но это маловероятно (вроде оно подставляет пробельные символы только, лень гуглить)
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP - регулярные выражения. SoftKoc PHP 12 27.10.2012 14:21
Регулярные выражения (PHP) Darlee PHP 2 06.03.2011 16:00
Регулярные выражения в PHP ZET78 PHP 1 31.10.2010 20:51
Регулярные выражения PHP russian-stalker PHP 8 11.04.2010 17:46
Регулярные выражения. (PHP) slavec PHP 1 10.03.2010 20:59