Я знал, что []
обозначает набор допустимых символов -
>>> p = r'^[ab]$'
>>>
>>> re.search(p, '')
>>> re.search(p, 'a')
<_sre.SRE_Match object at 0x1004823d8>
>>> re.search(p, 'b')
<_sre.SRE_Match object at 0x100482370>
>>> re.search(p, 'ab')
>>> re.search(p, 'ba')
Но... сегодня я встретил выражение с вертикальными полосами в круглых скобках, чтобы определить взаимоисключающие шаблоны -
>>> q = r'^(a|b)$'
>>>
>>> re.search(q, '')
>>> re.search(q, 'a')
<_sre.SRE_Match object at 0x100498dc8>
>>> re.search(q, 'b')
<_sre.SRE_Match object at 0x100498e40>
>>> re.search(q, 'ab')
>>> re.search(q, 'ba')
Это похоже на аналогичную функциональность, как указано выше, или я что-то не хватает?
PS: В Python
скобки сами используются для определения логических групп совпадающего текста. Если я использую второй метод, то как использовать скобки для обоих заданий?