Скупови знакова у регуларним изразима Пајтона
Групе знакова \d и \w нису
врло флексибилне. Чак и тако једноставан задатак,
као пронађи сва слова, али не цифре -
не може бити решен њима. За такве задатке
треба користити угласте заграде,
које представљају операцију 'или'.
Угласте заграде замењују један
знак, било који од наведених унутар њих. На
пример, овако: x[abc]x -
ми кажемо да на крајевима морају стајати слова
икс, а унутар - један знак: или 'a',
или 'b', или 'c'.
Након угластих заграда могу се писати
оператори понављања. На пример, овако:
x[abc]+x - ми кажемо да унутар
икса може бити било која количина знакова
'a', 'b' и 'c' - у
било којим комбинацијама.
Могуће је не само набрајати знакове, већ
и креирати групе знакова, записивањем између
два знака цртицу. На пример, овако:
[a-d] - добијамо све знакове од
'a' до 'd'.
Хајде да погледамо на примерима.
Пример
У овом примеру шаблон претраге изгледа
овако: између икса било које слово од
'a' до 'z':
Резултат извршавања кода:
'! ! ! x@x'
Пример
У овом примеру шаблон претраге изгледа
овако: између икса било које слово од
'a' до 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Резултат извршавања кода:
'! ! xmx x@x'
Пример
У овом примеру шаблон претраге изгледа
овако: између икса било које слово од
'A' до 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Резултат извршавања кода:
'xax ! xcx x@x'
Пример
У овом примеру шаблон претраге изгледа
овако: између икса било која цифра од 0
до 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Резултат извршавања кода:
'xax ! ! ! 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'
Пример
У овом примеру шаблон претраге изгледа
овако: између икса било које слово од
'a' до 'z' или цифра од
1 до 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Резултат извршавања кода:
'! ! ! ! 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'
Пример
У овом примеру шаблон претраге изгледа
овако: између икса било које слово од
'a' до 'z' или цифре 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Резултат извршавања кода:
'! ! ! ! x3x'
Пример
У овом примеру шаблон претраге изгледа
овако: између икса слова од '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', а између њих - мала
латинична слова и цифре, не дирајући
остала.