⊗pyPmREHHy 47 of 129 menu

Тире вътре в набори в регулярни изрази на Python

Тирето - също е специален символ вътре в [ ] (а отвън - не е). Ако имате нужда от самото тире като символ - го поставете там, където няма да бъде възприето като разделител на група.

Защо това е важно: можете да създадете група от символи, без самите да го забележите. Например, ето така - '[:-@]' - вие мислите, че избирате две точки, тире и знак @, а всъщност се получава група от символи между : и @. В тази група влизат следните символи: ? < = > :

Откъде са се взели? От таблицата ASCII - две точките имат по-малък номер от знака @ - и се получава група. Тоест всички групи се получават според таблицата ASCII (ако желаете можете да използвате това).

Как да се справим с това: поставете символа тире там, където със сигурност няма да бъде възприет като символ на група, например, в началото или в края (тоест след [ или пред ]).

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

Пример

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

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a-z]2', '!', txt) print(res)

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

'! 1-2 ! !'

Пример

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

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a\-z]2', '!', txt) print(res)

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

'! ! 1c2 !'

Пример

Можете просто да пренаредите тирето, без да го екранирате:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[az-]2', '!', txt) print(res)

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

'! ! 1c2 !'

Пример

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

txt = 'axx Axx -xx @xx' res = re.sub('[a-z-]xx', '!', txt) print(res)

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

'! Axx ! @xx'

Пример

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

txt = 'axx Axx -xx @xx' res = re.sub('[a-zA-Z-]xx', '!', txt) print(res)

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

'! ! ! @xx'

Пример

Можете да поставите тирето между две групи - там то със сигурност няма да създаде още една група:

txt = 'axx 9xx -xx @xx' res = re.sub('[a-z-0-9]xx', '!', txt) print(res)

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

'! ! ! @xx'

Практически задачи

Даден е низ:

txt = 'xaz xBz xcz x-z x@z'

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

Даден е низ:

txt = 'xaz x$z x-z xcz x+z x%z x*z'

Намерете всички низове по следния шаблон: буква 'x', следвана от долар, или тире или плюс, следвана от буква 'z'.

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