⊗pyPmREESCh 36 of 129 menu

Екранирање специјалних карактера у регуларним изразима Пајтона

Претпоставимо да је потребно да се специјални карактер користи да означи самог себе. За то је потребно да га екранирамо помоћу обрнуте косе црте. Погледајмо примере.

Пример

У следећем примеру аутор регуларног израза је желео да шаблон за претрагу изгледа овако: слово 'a', затим плус '+', затим слово 'x'. Међутим, аутор кода није екранирао симбол '+' и због тога шаблон за претрагу у ствари изгледа овако: слово 'a' један или више пута, затим слово 'x':

txt = 'a+x ax aax aaax' res = re.sub('a+x', '!', txt) print(res)

Резултат извршавања кода:

'a+x ! ! !'

Пример

Сада је аутор екранирао плус обрнутом косом цртом. Сада шаблон за претрагу изгледа како треба: слово 'a', затим плус '+', затим слово 'x':

txt = 'a+x ax aax aaax' res = re.sub('a\+x', '!', txt) print(res)

Резултат извршавања кода:

'! ax aax aaax'

Пример

У овом примеру шаблон изгледа овако: слово 'a', затим тачка '.', затим слово 'x':

txt = 'a.x abx azx' res = re.sub('a\.x', '!', txt) print(res)

Резултат извршавања кода:

'! abx azx'

Пример

У следећем примеру аутор је заборавио да екранира тачку и под регуларни израз су упале све подниске, јоб неекранирана тачка означава било који карактер:

txt = 'a.x abx azx' res = re.sub('a.x', '!', txt) print(res)

Резултат извршавања кода:

'! ! !'

Напомена

Обратите пажњу на то да ако заборавите обрнуту косу црту за тачку (када она треба да означава саму себе) - то се може чак и не приметити:

res = re.sub('a.x', '!', 'a.x') print(res) # враћа '!', као што смо желели

Визуелно ради исправно (пошто тачка означава било који карактер, укључујући и обичну тачку '.'). Али ако променимо ниску у којој се врше замене - видећемо нашу грешку:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # враћа '! ! !', а очекивало се '! abx azx'

Списак специјалних и обичних карактера

Ако екранирате обичан карактер - ништа страшно се неће догодити - он ће и даље означавати самог себе. Изузетак су цифре, њих није могуће екранирати.

Често се поставља питање да ли је одређени карактер специјалан. Неки дођу до тога да екранирају све сумњиве карактере у низу. Међутим, то је лоша пракса (затрпава регуларни израз обрнутим косама цртама).

Специјални карактери су: $ ^ . * + ? \ / {} [] () |

Нису специјални карактери: @ : , ' " - _ = < > % # ~ `& !

Практични задаци

Дата је ниска:

txt = 'a.a aba aea'

Напишите регуларни израз који ће пронаћи ниску 'a.a', без узимања осталих.

Дата је ниска:

txt = '2+3 223 2223'

Напишите регуларни израз који ће пронаћи ниску '2+3', без узимања осталих.

Дата је ниска:

txt = '23 2+3 2++3 2+++3 345 567'

Напишите регуларни израз који ће пронаћи ниске '2+3', '2++3', '2+++3', без узимања осталих (+ може бити било који број).

Дата је ниска:

txt = '23 2+3 2++3 2+++3 445 677'

Напишите регуларни израз који ће пронаћи ниске '23', '2+3', '2++3', '2+++3', без узимања осталих.

Дата је ниска:

txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'

Напишите регуларни израз који ће пронаћи ниске '*q+', '*qq+', '*qqq+', без узимања осталих.

Дата је ниска:

txt = '[abc] {abc} abc (abc) [abc]'

Напишите регуларни израз који ће пронаћи ниске у угластим заградама и заменити их са '!'.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј