2013-06-04 5 views
0

Я хочу написать регулярное выражение для соответствия диапазону страниц, но сложнее!о регулярном выражении для диапазона продвинутых страниц

Мне нужно, чтобы соответствовать следующей строки:

1-20 : from No.1 page to No.20, 
1-20x2: from No.1 to No.20 and step is 2, so it'll print 10 pages 
1-20a2: from No.1 to No.20, every 2 page printed to 1 paper 
1-20x2a2: 
1-20a2x3: 
1,3-20a2x3, 
1-20a2x3,30-35x2 
1-20x3a2,30-25a2 

У меня есть написать регулярное выражение:

^([0-9]*|[0-9]*-[1-9][0-9]*(x[1-9][0-9]*)?(a[1-9][0-9]*)?)(,([0-9]*|[0-9]*-[1-9][0-9]*(x[1-9][0-9]*)?(a[1-9][0-9]*)?))*$ 

, который может соответствовать практически в любой ситуации, но порядок «х» и «а» не могут быть изменены,

Так что, пожалуйста, помогите мне исправить это! Спасибо !

+1

В такой ситуации лучше всего создать регулярное выражение из компонентов. Посмотрите на парсер из почтового адреса из одного из выпусков «Освоение регулярных выражений» Джеффри Фридла. Я думаю, что это появляется во втором издании. –

+0

какой язык вы используете? –

ответ

1

Без проверки повторных х годов и годов:

(?:(\d+)(,\d+)?-(\d+)([ax]\d+)?([ax]\d+)?)+ 

Мысль небольшая помощь от языка программирования может значительно упростить это.

Смежные вопросы