Групи на симболи во регуларните изрази во Python
Постојат специјални команди кои
овозможуваат избор на цели групи
на симболи одеднаш. Командата \d значи цифра
од 0 до 9. Командата \w
означува цифра, латинична буква или знак
за подвлекување. Командата \s означува
празно место или празен симбол: празно место,
нова линија, табулација. Може да се инвертира
вредноста на командата, со пишување на голема буква:
на пример, ако \d - цифра, тогаш
\D - не е цифра.
Пример
Ајде да ги најдеме сите цифри:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! !! !!!'
Пример
Операторите за повторување ги сметаат командите-групи
за едно цело, односно заградите за групирање
не се потребни. Во следниот пример шаблонот за пребарување
изгледа вака: цифра од 0 до
9 еднаш или повеќе пати:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! abc @@@'
Пример
Во следниот пример шаблонот за пребарување изгледа
вака: се што е еднаш или повеќе пати,
но не е цифра од 0 до 9:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'123!3!'
Пример
Во овој пример шаблонот за пребарување изгледа вака: празен симбол еднаш:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'1!12!123!abc!@@@'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: НЕ празен симбол еднаш или повеќе
пати. Сите поднизи, разделени со
празни места, ќе се заменат со '!':
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! ! !'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: цифра или буква еднаш или повеќе
пати. Сите поднизи, составени од цифри
и букви, ќе се заменат со '!':
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'! ! ! ! @@@'
Пример
Во овој пример шаблонот за пребарување изгледа
вака: НЕ цифра и НЕ буква еднаш или повеќе
пати. Во овој случај, под оваа дефиниција
спаѓа '@@@' и сите празни места
(тие исто така не се цифри или букви).
Обрнете внимание на тоа што на крајот има една
'!' - во неа се преобразува низата
' @@@' - со празно место пред неа:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Резултат од извршувањето на кодот:
'1!12!123!Abc!'
Практични задачи
Дадена е низа:
txt = 'a1a a2a a3a a4a a5a aba aca'
Напишете регуларен израз кој ќе ги најде низите,
во кои на рабовите стојат букви 'a',
а помеѓу нив една цифра.
Дадена е низа:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Напишете регуларен израз кој ќе ги најде низите,
во кои на рабовите стојат букви 'a',
а помеѓу нив било кој број на цифри.
Дадена е низа:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Напишете регуларен израз кој ќе ги најде низите,
во кои на рабовите стојат букви 'a',
а помеѓу нив било кој број на цифри (вклучувајќи
и нула цифри, односно низата
'aa').
Дадена е низа:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Напишете регуларен израз кој ќе ги најде низите
од следниот вид: на рабовите стојат букви
'a' и 'b', а помеѓу нив -
не број и не празно место.
Дадена е низа:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Напишете регуларен израз кој ќе ги најде низите
од следниот вид: на рабовите стојат букви
'a' и 'b', а помеѓу нив -
не буква, не цифра и не празно место.
Дадена е низа:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Напишете регуларен израз кој ќе ги замени сите
празни места со '!'.