powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) поиск заведомо неизвестного количества совпадений
18 сообщений из 18, страница 1 из 1
(PHP) поиск заведомо неизвестного количества совпадений
    #33500912
Savage_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!
Появилась такая проблема:
необходимо составить регулярное выражение, которое проверяло бы: содержатся ли в строке str подстроки str1, str2, .... и т.д. - количество подстрок заведомо неизвестно. Как составить регулярное выражение, чтобы проверялось именно одновременно наличие всех подстрок str1...n?

Уточнение: например если записать так:
"str1|str2" - выдает положительный результат если присутствует одна из указанных ветвей, т.е. действует по принципу "ИЛИ", а мне необходимо чтобы было как "И".

Возможно ли записать это условие одной строкой?
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33500961
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Savage_AlexВозможно ли записать это условие одной строкой?А нужно ли?
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33500986
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это замедлит работу, если "одной строкой" ...
далее, если все-таки хотите "одной строкой", формируете переменную с значением $str="\$str=~s/(str_1)(str2_)(str_3)...(str_n)//";
Код: plaintext
eval "$str";
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501036
Savage_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело в том что если я передаю указанный вами паттерн в функцию preg_match, то ничего не получается.

Либо паттерн будет иметь другой вид для этой функции?

Немогли бы вы привести пример паттерна в preg_match, например для:
в строке str найти соответствие строкам str1, str2, str3
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501087
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в том что если я передаю указанный вами паттерн в функцию preg_match, то ничего не получается.

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

Код: plaintext
1.
2.
$str = "preg_match(\"/(str1)\s(str2)\s(str3)/i\", \"str1 str2 str3\")";
eval ($str);

PHP: preg_match - Manual
PHP: eval - Manual
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501103
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
А я смотрю, вы большой любитель eval'а. А зачем он там вообще? Кроме того, ваше решение проблемы не решает - подстроки str1, str2 и strN, по условию задачи, могут располагаться в любом порядке (по крайней мере - в условии это не оговорено). Так же, как и не оговорено, что подстроки могут и должны разделяться символами \s
Тем не менее ответ на вопрос "зачем решать задачу одним регулярником?" - остаётся загадкой.
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501337
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я смотрю, вы большой любитель eval'а. А зачем он там вообще?
А как тогда решить проблему "одной строкой"?

Кроме того, ваше решение проблемы не решает - подстроки str1, str2 и strN, по условию задачи, могут располагаться в любом порядке (по крайней мере - в условии это не оговорено).
В том то и дело "не оговорено" ...

Так же, как и не оговорено, что подстроки могут и должны разделяться символами \s
Я просто показал в качестве примера ...

Тем не менее ответ на вопрос "зачем решать задачу одним регулярником?" - остаётся загадкой.
Для меня тоже, я автора предупредил, что "это" замедлит работу.
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501460
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николай aka Motodor А я смотрю, вы большой любитель eval'а. А зачем он там вообще?
А как тогда решить проблему "одной строкой"?


"одна строка" != "одно регулярное выражение"... а строки они длинные бывают... :)
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501462
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2 Николай aka Motodor А я смотрю, вы большой любитель eval'а. А зачем он там вообще?
А как тогда решить проблему "одной строкой"?


"одна строка" != "одно регулярное выражение"... а строки они длинные бывают... :)
думаю это надо сказать не мне, а автору топика
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501848
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Николай aka MotodorА как тогда решить проблему "одной строкой"?А eval как-то помогает это сделать? :) Тем более - это не ответ на вопрос - а зачем он там вообще, когда я с таким же успехом мог бы написать
Код: plaintext
$str = preg_match("/(str1)\s(str2)\s(str3)/i", "str1 str2 str3");
?
Будем считать, что бессмысленность самого выражения я не заметил.
PS: есть простое правило - eval никогда не нужен. Если он вам нужен - значит вы что-то делаете не так.
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501935
Savage_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за внимание.
Дело в том что, как было указано выше, необходима конструкция, которая искала бы подстроки str1, str2, str3 - в любом их порядке следования в строке str (то что они должны следовать именно в строгой последовательности - это уже просто сужение поставленного условия что действительно не оговаривалось). И я просто хотел узнать возможно ли записать это все кратко, как например для "str1|str2"

Видимо задачу прийдется таки решать другим путем :)
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33501961
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* Николай aka MotodorА как тогда решить проблему "одной строкой"?А eval как-то помогает это сделать? :) Тем более - это не ответ на вопрос - а зачем он там вообще, когда я с таким же успехом мог бы написать
Код: plaintext
$str = preg_match("/(str1)\s(str2)\s(str3)/i", "str1 str2 str3");
?

Автор написал ведь, что "заведомо неизвестно" сколько должно быть совпадений ....
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33502085
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Savage_Alex
Видимо задачу прийдется таки решать другим путем :)
Не поверишь, но ты совершенно прав!!!
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33502296
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Николай aka MotodorАвтор написал ведь, что "заведомо неизвестно" сколько должно быть совпадений ....А разве из этого следует, что там необходим eval? Вы всё же на поставленный то вопрос ответье - зачем он там? ;) Savage_AlexИ я просто хотел узнать возможно ли записать это все кратко, как например для "str1|str2"Возможно. Но оно того не стоит. Есть такой принцип - KISS. И для этой задачи он как нельзя кстати ;)Видимо задачу прийдется таки решать другим путем :)Это было бы наиболее разумно :)
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33502307
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
* Видимо задачу прийдется таки решать другим путем :)Это было бы наиболее разумно :)Забыл добавить - следуя тому же принципу и здравому смыслу - регулярные выражения вам не нужны вообще ;)
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33502544
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве из этого следует, что там необходим eval? Вы всё же на поставленный то вопрос ответье - зачем он там? ;)
Код: plaintext
1.
$str = "preg_match(\"/(str1)\s(str2)\s(str3)/i\", \"str1 str2 str3\")";
а как тогда лучше сформировать код, который потом интерпритировать?

p.s. зачем " стирали ? $str = " ... "
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33503047
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Николай aka Motodorа как тогда лучше сформировать код, который потом интерпритировать?А зачем формировать код и его интерпретировать? Разве в задаче это требуется? Надо-то с гулькин хвост
Код: plaintext
1.
$bool = true;
foreach ($needle as $v) if ($bool &= strpos($haystack,$v) !== false) break;
...
Рейтинг: 0 / 0
(PHP) поиск заведомо неизвестного количества совпадений
    #33503053
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Пардон, поспешил
Код: plaintext
1.
2.
3.
4.
5.
$bool = true;
foreach ($needle as $v)
  if (strpos($haystack,$v) === false) {
    $bool = false;
    break;
  }
да и так читаемее ;)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) поиск заведомо неизвестного количества совпадений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]