Командата 'или' в регулярните изрази на Python
Командата '|', която представлява
по-мощна версия на 'или'
в сравнение с командата [ ]. Тази команда
позволява разделянето на регулярния израз на няколко
части. В този случай търсеното може да отговаря
или на едната част от регулярния израз, или на
другата. Нека разгледаме примери.
Пример
В този пример шаблонът за търсене е:
три букви 'a' или три букви
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! abb'
Пример
В този пример шаблонът за търсене е:
три букви 'a' или от 1 и
повече букви 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! ! ! axx'
Пример
В този пример шаблонът за търсене е: една или повече букви или три цифри:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! ! 1 12 !'
Пример
Вертикалната черта може да раздели регулярния израз не на две части, а на произволен брой части:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! ! ddd'
Пример
Ако вертикалната черта е вътре в кръгли
скоби, то 'или' работи само
вътре в тези скоби.
Като пример нека намерим низове по
следния шаблон: в началото стои или
'a', или 'b' един или повече
пъти, а след това две букви 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! ! exx'
Практически задачи
Даден е низът:
txt = 'aeeea aeea aea axa axxa axxxa'
Напишете регулярен израз, който ще намери низовете
по шаблон: по краищата стоят букви
'a', а между тях - или буква
'e' произволен брой пъти или буква
'x' произволен брой пъти.
Даден е низът:
txt = 'aeeea aeea aea axa axxa axxxa'
Напишете регулярен израз, който ще намери низовете
по шаблон: по краищата стоят букви
'a', а между тях - или буква
'e' два пъти или буква 'x'
произволен брой пъти.