LINUX.ORG.RU

Питон, регулярка и начало строки

 ,


0

1

Что-то туплю: если использовать match, или крышку в регулярке, то все работает как надо. Но если искать не с начала строки, почему (p)? выдает None, когда p есть? Если использовать (p?), то все нормально.
В чем тут соль ?
Непонятно где должен быть знак вопроса в скобках или снаружи.

import re

def test(regexp,string):
    result = re.search(regexp,string)
    if result:
        print(result.group(0))
        print(result.groups())
    else:
        print("None")

test(r'''^(p)?(\d{2})(?(1)m)''',"p11m")
print("----------------")
test(r'''^(p)?(\d{2})(?(1)m)''',"p11")
print("----------------")
test( r'''(p)?(\d{2})(?(1)m)''',"p11")

...

p11m
('p', '11')
----------------
None
----------------
11
(None, '11')



Последнее исправление: Vasily22 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.