Python регуляр ифодалардаги белгилар тўплами
Белгилар гуруҳи \d ва \w жуда
мусбат эмас. Ҳатто барча ҳарфларни топинг, лекин рақамларни эмас -
каби оддий вазифа ҳам улар томонидан ҳал килина олмайди. Бундай вазифалар учун
'ёки' амалиётини ифодаловчи қавс ишлатиш керак.
Қавс ичида кўрсатилган ҳар қандай битта белгини алмаштиради. Масалан, шундай: x[abc]x - биз
чекларда харфлари туршиси керак, ва ичида - битта белги: ёки 'a',
ёки 'b', ёки 'c'.
Қавсдан кейин такрорлаш операторларини ёзиш мумкин. Масалан, шундай:
x[abc]+x - биз ичда
ҳар қандай миқдордаги белгилар бўлиши мумкин деймиз
'a', 'b' ва 'c' -
ҳар қандай комбинацияда.
Фақат белгиларни рўйҳатдан ўтказиш эмас, балки
икки белги ўртасига чизиқча қўйиш орқали белгилар гуруҳларини яратиш мумкин. Масалан, шундай:
[a-d] - биз ҳамма белгиларни оламиз
'a' дан 'd' гача.
Келгила, мисолларда кўрамиз.
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳар қандай ҳарф
'a' дан 'z' гача:
Кодни бажариш натижаси:
'! ! ! x@x'
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳар қандай ҳарф
'a' дан 'k' гача:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Кодни бажариш натижаси:
'! ! xmx x@x'
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳар қандай ҳарф
'A' дан 'Z' гача:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Кодни бажариш натижаси:
'xax ! xcx x@x'
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳар қандай рақам 0
дан 9 гача:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Кодни бажариш натижаси:
'xax ! ! ! 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'
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳар қандай ҳарф
'a' дан 'z' гача ёки рақам 1
дан 9 гача:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Кодни бажариш натижаси:
'! ! ! ! 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'
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳар қандай ҳарф
'a' дан 'z' гача ёки рақамлар 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Кодни бажариш натижаси:
'! ! ! ! x3x'
Мисол
Ушбу мисолда қидириш намунаси шундай кўринади:
х лари ўртасида ҳарфлар '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' туради, ва улар ўртасида - кичик
латин ҳарфлари ва рақамлар, бошқаларига тегмай.