Operatorët e përsëritjes së karaktereve në regex
Ndodh situata kur duhet të tregoni se një
karakter përsëritet një numër të caktuar
herësh. Nëse numri i saktë i përsëritjeve nuk dihet,
atëherë thjesht mund ta shkruani disa herë
- 'aaaa'. Por çfarë duhet bërë nëse duhet
thënë kështu: përsërit një ose më shumë
herë?
Për këtë ekzistojnë operatorët (kuantifikues)
e përsëritjes: plus + (një ose më shumë
herë), yll * (zero ose më shumë
herë) dhe pikëpyetje ? (zero ose një herë).
Këta operatorë veprojnë mbi atë karakter
që qëndron përpara tyre.
Le të shohim punën e këtyre operatorëve në shembuj.
Shembull
Le të gjejmë të gjitha nënvargjet sipas shabllonit shkronjë
'x', shkronjë 'a' një ose më shumë
herë, shkronjë 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'xx ! ! ! xbx'
Shembull
Le të gjejmë të gjitha nënvargjet sipas shabllonit shkronjë
'x', shkronjë 'a' zero ose më shumë
herë, shkronjë 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! ! xbx'
Shembull
Le të gjejmë të gjitha nënvargjet sipas shabllonit shkronjë
'x', shkronjë 'a' zero ose një
herë, shkronjë 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! xaax xbx'
Detyra praktike
Është dhënë vargu:
txt = 'aa aba abba abbba abca abea'
Shkruani një regex që do të gjejë vargjet
'aba', 'abba', 'abbba'
sipas shabllonit: shkronjë 'a', shkronjë
'b' çdo numër herësh, shkronjë
'a'.
Është dhënë vargu:
txt = 'aa aba abba abbba abca abea'
Shkruani një regex që do të gjejë vargjet
'aa', 'aba', 'abba',
'abbba' sipas shabllonit: shkronjë
'a', shkronjë 'b' çdo numër herësh
(duke përfshirë asnjë herë), shkronjë
'a'.
Është dhënë vargu:
txt = 'aa aba abba abbba abca abea'
Shkruani një regex që do të gjejë vargjet
'aa', 'aba' sipas shabllonit:
shkronjë 'a', shkronjë 'b' një
herë ose asnjëherë, shkronjë 'a'.
Është dhënë vargu:
txt = 'aa aba abba abbba abca abea'
Shkruani një regex që do të gjejë vargjet
'aa', 'aba', 'abba',
'abbba', pa kapur 'abca'
dhe 'abea'.