⊗pyPmRENPB 71 of 129 menu

Non-capturing скоби в регулярните изрази на Python

Скобите ( ) изпълняват две функции - групиране на символи и функция на capturing група. А какво да правим, ако трябва да групираме, но да не capture-ваме в група? За решаване на такъв проблем са създадени специални non-capturing скоби (?: ) - те групират, но не създават capturing група.

Пример

В следващия пример първите скоби са ни нужни за групиране, а вторите - за capturing група. Обаче, и двете скоби запазват данни в capturing група:

txt = 'abab123' res = re.search('(ab)+([1-9]+)', txt)

В резултат в нашите capturing групи ще има следното:

print(res[0]) # ще изведе 'abab123' print(res[1]) # ще изведе 'ab' print(res[2]) # ще изведе '123'

Пример

Нека направим така, че първата двойка скоби само да групира, но да не създава capturing група:

txt = 'abab123' res = re.search('(?:ab)+([1-9]+)', txt)

В резултат в първата capturing група ще бъде нашето число:

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