Python регулярдык туюнтмалардагы символдор топтому
Символдор тобу \d жана \w өтө
ийкем эмес. Андай жөнөкөй милдет,
мындай бардык тамгаларды, бирок сандарды эмес табуу -
алар тарабынан чечилбейт. Ушул сыяктуу милдеттер үчүн
'же' амалын туюнткан чарчы кашааларды
колдонуу керек.
Чарчы кашаалар ичиндеги тизмеленген
бир символду алмаштырат. Мисалы, мындай: x[abc]x - биз
чуңкурда x тамгасы турушу керек деп айтабыз,
ал эми ортосунда - бир символ: же 'a',
же 'b', же 'c'.
Чарчы кашаалардан кийин
кайталоо операторлорун жаза аласыз. Мисалы, мындай:
x[abc]+x - биз ортосунда
канчалык символ болсо да болот деп айтабыз
'a', 'b' жана 'c' -
ар кандай айкалышта.
Символдорду гана тизмелеп койбостон,
символдор тобун түзө аласыз, алардын арасына сызыкча коюп.
Мисалы, мындай: [a-d] - биз
'a' дан 'd' га чейинки бардык символдорду алабыз.
Келгиле, мисалдарды карап көрөлү.
Мисал
Бул мисалда издөө шаблону төмөнкүдөй көрүнөт:
x'тин ортосунда 'a' дан 'z' га чейинки каалаган тамга:
Кодду иштетүүнүн натыйжасы:
'! ! ! 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' тамгасы турат,
алардын ортосунда - кичине латын тамгалары жана сандар, калгандарына тийбестен.