⊗pyPmREChS 40 of 129 menu

Набори от символи в регулярни изрази на Python

Групите символи \d и \w не са много гъвкави. Дори такава проста задача, като намери всички букви, но не цифри - не може да бъде решена с тях. За такива задачи следва да се използват квадратни скоби, които представляват операция 'или'.

Квадратните скоби заместват един символ, който е любой от изброените вътре. Например, ето така: x[abc]x - казваме, че в краищата трябва да стоят букви 'x', а вътре - един символ: или 'a', или 'b', или 'c'.

След квадратни скоби могат да се пишат оператори за повторение. Например, ето така: x[abc]+x - казваме, че между 'x'-овете може да има произволен брой символи 'a', 'b' и 'c' - в каквито и да е комбинации.

Може не само да се изброяват символи, но и да се създават групи от символи, като се запише между два символа тире. Например, ето така: [a-d] - получаваме всички символи от 'a' до 'd'.

Нека да разгледаме примери.

Пример

В този пример шаблонът за търсене изглежда така: между 'x'-овете всяка буква от 'a' до 'z':

<+Python+> txt = 'xax xbx xcx x@x' res = re.sub('x[a-z]x', '!', txt) print(res) <-python->

Резултат от изпълнението на кода:

'! ! ! x@x'

Пример

В този пример шаблонът за търсене изглежда така: между 'x'-овете всяка буква от 'a' до 'k':

txt = 'xax xbx xmx x@x' res = re.sub('x[a-k]x', '!', txt) print(res)

Резултат от изпълнението на кода:

'! ! xmx x@x'

Пример

В този пример шаблонът за търсене изглежда така: между 'x'-овете всяка буква от 'A' до 'Z':

txt = 'xax xBx xcx x@x' res = re.sub('x[A-Z]x', '!', txt) print(res)

Резултат от изпълнението на кода:

'xax ! xcx x@x'

Пример

В този пример шаблонът за търсене изглежда така: между 'x'-овете всяка цифра от 0 до 9:

txt = 'xax x1x x3x x5x x@x' res = re.sub('x[0-9]x', '!', txt) print(res)

Резултат от изпълнението на кода:

'xax ! ! ! x@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'

Пример

В този пример шаблонът за търсене изглежда така: между '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'

Пример

В този пример шаблонът за търсене изглежда така: между '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'

Пример

В този пример шаблонът за търсене изглежда така: между 'x'-овете всяка буква от 'a' до 'z' или цифри 1, 2:

txt = 'xax xbx x1x x2x x3x' res = re.sub('x[a-z12]x', '!', txt) print(res)

Резултат от изпълнението на кода:

'! ! ! ! x3x'

Пример

В този пример шаблонът за търсене изглежда така: между 'x'-овете букви от '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', а между тях - малки латински букви и цифри, без да засяга останалите.

Български
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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне