Квантификатор ровно n или m раз

Статус
В этой теме нельзя размещать новые ответы.

Disher

Постоялец
Регистрация
25 Июл 2009
Сообщения
90
Реакции
8
Подскажите пожалуйса, каким образом указать квантификатор, чтобы составить регулрку для поиска, например такой конструкции [0-9]+\s с повторениями ровно 7 или 10 раз. В мануале написано только {n} - ровно n раз, {n,m} - от n до m раз включительно. А мне надо, ровно n или m раз. Или же придется разбивать на два рег выражения?
 
Просто в регулярке напишите 2 шаблона разделив их "|" (или)
'#([0-9]{7})\s|([0-9]{10})\s#'
 
Спасибо. Думал, что имеется какое-нибудь стандартное решение. В итоге сделал так (благодаря Вашему совету:(
PHP:
('#^([0-9]+\s+){'. $cols_sr10 .'}[0-9]+$|^([0-9]+\s+){'. $cols_sr13 .'}[0-9]+$#',$line)
 
ZuArt в таком случае вторую группу можно делать не простыми скобками, а без образования обратной ссылки, т.к. бессмыслено получать только последние три символа. Это будет выглядеть так:
'#([0-9]{7}(?:[0-9]{3})?)\s#'

И плюс с том, что не будет создана обратная ссылка $2, просто все число можно бубдет получить как $1

И еще, я бы написал покороче

'#(\d{7}(?:\d{3})?)\s#'
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху