2014-09-26 2 views
0

Вот регулярное выражение в urls.pyрегулярное выражение себя странно в Джанго URLs

url(r'^company_data/(?:[A-Za-z]+)/((?:0?[1-9]|[12][0-9]|3[01])(?:0?[1-9]|1[012])(?:20)?[0-9]{2})*/((?:0?[1-9]|[12][0-9]|3[01])(?:0?[1-9]|1[012])(?:20)?[0-9]{2})*$', 'stats.views.second', name='home'), 

мой views.py

def second(request,comp_name,offset_min,offset_max=None): 

Я зову таким образом из браузера /company_data/hello/24092014/25092014

Ожидая следующим образом

comp_name= "hello", offset_min="24092014",offset_max="25092014" 

На самом деле это

comp_name="24092014",offset_max="25092014" 

Что плохого я сделала здесь ?? Спасибо заранее! введите код здесь

+0

Она решена ошибка состоит в том (?: [A-Za-Z] +), должны использовать ((?: [A-Za-Z] +)) –

+2

Нет: просто оставьте?: Вообще, так как это явно обозначает группу, не связанную с захватом. –

ответ

0

Вы упускаете захват группу 1.

Edit: отметить также, что группы 2 и 3 должны быть сделаны, как показано ниже, если я не читаю вам
неправильно, и вы намерены для извлечения последней части определенных групп чисел.

# '^/?company_data/([A-Za-z]+)/((?:(?:0?[1-9]|[12][0-9]|3[01])(?:0?[1-9]|1[012])(?:20)?[0-9]{2})*)/((?:(?:0?[1-9]|[12][0-9]|3[01])(?:0?[1-9]|1[012])(?:20)?[0-9]{2})*)$' 


^ 
/? company_data/
([A-Za-z]+)         # (1) 
/
(            # (2 start) 
     (?: 

      (?: 0? [1-9] | [12] [0-9] | 3 [01]) 
      (?: 0? [1-9] | 1 [012]) 
      (?: 20)? 
      [0-9]{2} 
    )* 
)            # (2 end) 
/
(            # (3 start) 
     (?: 

      (?: 0? [1-9] | [12] [0-9] | 3 [01]) 
      (?: 0? [1-9] | 1 [012]) 
      (?: 20)? 
      [0-9]{2} 
    )* 
)            # (3 end) 
$ 

Выход:

** Grp 0 - (pos 0 , len 37) 
/company_data/hello/24092014/25092014 
** Grp 1 - (pos 14 , len 5) 
hello 
** Grp 2 - (pos 20 , len 8) 
24092014 
** Grp 3 - (pos 29 , len 8) 
25092014 
Смежные вопросы