Сетови на знаци во регуларните изрази на Python
Групите на знаци \d и \w не
се многу флексибилни. Дури и едноставна задача,
како најди ги сите букви, но не и цифрите -
не може да се реши со нив. За вакви задачи
треба да се користат квадратни загради,
кои претставуваат операција 'или'.
Квадратните загради заменуваат еден
знак, кој било од наведените внатре. На
пример, вака: x[abc]x - ние
кажуваме дека од краевите мора да стојат букви
x, а внатре - еден знак: или 'a',
или 'b', или 'c'.
После квадратните загради може да се пишуваат
оператори за повторување. На пример, вака:
x[abc]+x - ние кажуваме дека внатре
во x-овите може да има било кој број на знаци
'a', 'b' и 'c' - во
било кои комбинации.
Може не само да се набројуваат знаци, туку
да се создаваат групи на знаци, запишувајќи помеѓу
два знака цртичка. На пример, вака:
[a-d] - ги добиваме сите знаци од
'a' до 'd'.
Ајде да погледнеме на примери.
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која буква од
'a' до 'z':
Резултат од извршувањето на кодот:
'! ! ! x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која буква од
'a' до 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! xmx x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која буква од
'A' до 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'xax ! xcx x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која цифра од 0
до 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'xax ! ! ! x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која цифра од 3
до 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'xax x1x ! ! x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која буква од
'a' до 'z' или цифра од
1 до 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! ! x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која буква од
'a' до 'z' или буква од
'A' до 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! x5x x@x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови било која буква од
'a' до 'z' или цифри 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! ! x3x'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: помеѓу x-ови букви од 'a'
до 'z' во количество од 1 и
повеќе:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'xx ! ! ! x123x xa3x'
Пример
Ајде да направиме така што количеството букви може да биде и нула:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Како резултат ќе добиеме:
'! ! ! ! x123x xa3x'
Пример
Внатре во квадратните загради исто така може да се наведат ескапирани знаци. Ајде да најдеме низа од букви и цифри, која се повторува нула или повеќе пати:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! x@x ! ! !'
Пример
Ако ни треба да наведеме уште едни квадратни загради, тогаш и нив мора да ги ескапираме:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! x3x'
Практични задачи
Дадена е низа:
txt = 'aba aea aca aza axa'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - буква 'b',
'e' или 'x'.
Дадена е низа:
txt = 'a1a a3a a7a a9a aba'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - цифра од
3 до 6.
Дадена е низа:
txt = 'aba aea afa aha aga'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - буква од
'a' до 'g'.
Дадена е низа:
txt = 'aba aea afa aha aga'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - буква од
'a' до 'f' и од 'j'
до 'z'.
Дадена е низа:
txt = 'aAa aea aEa aJa a3a'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - буква од
'a' до 'f' и од 'A'
до 'D'.
Дадена е низа:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - мали
латински букви, без да ги допре останатите.
Дадена е низа:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - мали и
големи латински букви, без да ги допре
останатите.
Дадена е низа:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Напишете регуларен израз, кој ќе најде според
следниот шаблон: од краевите стојат букви
'a', а помеѓу нив - мали
латински букви и цифри, без да ги допре
останатите.