Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не работает простое регулярное выражение


Автор: maxipub 8.8.2017, 16:22
Добрый день!

Код
preg_match('#^[0-9]+([one|two|three]{1})[0-9]+$#i', '111two333', $_matches);


Выражение должно срабатывать, когда в строке из цифр есть есть ОДНА из указанных подстрок. Я думал что квантификатор {1} в данном случае учитывает количество найденных подстрок. Эксперименты показали что он все равно учитывает именно количество найденных символов. Т.е. чтоб пример сработал, нужно писать {3} - но понятно что это не будет работать для других строк, длиной не 3 символа. Как быть? Нужно решение задачи именно на регулярных выражениях (делаю разбор УРЛ-ов из логов, не на регах будет все круто заморочено).

Автор: Romikgy 8.8.2017, 21:42
Код

^\d+(one|two)\d+$

Автор: Starikan 10.8.2017, 15:15
изи


количество строк в классификаторе определяется через атрибуты массивных протоколов данных, которые обратаываются поочерёдно. на логах делать не надо, разбирай УРЛ по классификаторам через цикл и всё. ЭЛЕМЕНТАРНО. 

Автор: Romikgy 11.8.2017, 09:00
где код?
Цитата(Starikan @  10.8.2017,  13:13 Найти цитируемый пост)
я прекрасно знаю ответ

дайте его кодом ....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)