Quantcast
Channel: Linux.org.ru: Форум
Viewing all articles
Browse latest Browse all 108383

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

$
0
0

Что-то туплю: если использовать 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')

 ,


Viewing all articles
Browse latest Browse all 108383

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>