Python регуляр ифодалардаги символлар гуруҳлари
Бирданига бутун символлар гуруҳларини
танлаш имконини берадиган махсус буюруқлар
мавжуд. \d буюруғи 0 дан
9 гача рақамни англатади.
\w буюруғи рақам, лотин ҳарфи
ёки тагидиагонал белгисини англатади.
\s буюруғи бушлиқ ёки бушлиқ
симолни англатади: бушлиқ, сатри ўтиш,
табуляция. Буюруқнинг қийматини инвертациялаш
мумкин, катта ҳарф билан ёзиш орқали:
масалан, агар \d - рақам бўлса,
\D - рақам эмас.
Мисол
Келинг, барча рақамларни топајлик:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Кодни бажариш натижаси:
'! !! !!!'
Мисол
Такрорлаш операторлари буюруқ-гуруҳларни
бир бутунлик ҳисоблайди, яъни гуруҳлаш
qавслари керак эмас. Келаси мисолда қидирув
намунаси шундай кўринади: 0 дан
9 гача рақам бир ёки бир неча
mартаба:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Кодни бажариш натижаси:
'! ! ! abc @@@'
Мисол
Келаси мисолда қидирув намунаси шундай
кўринади: ҳар қандай нарса бир ёки бир
неча марта, лекин 0 дан 9
гача рақам эмас:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Кодни бажариш натижаси:
'123!3!'
Мисол
Бу мисолда қидирув намунаси шундай кўринади: бушлиқ симол бир марта:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Кодни бажариш натижаси:
'1!12!123!abc!@@@'
Мисол
Бу мисолда қидирув намунаси шундай
кўринади: бушлиқ симол ЭМАС бир ёки бир
неча марта. Бушлиқлар билан ажратилган
барча қисматўрлар '!' га
алмаштирилади:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Кодни бажариш натижаси:
'! ! ! ! !'
Мисол
Бу мисолда қидирув намунаси шундай
кўринади: рақам ёки ҳарф бир ёки бир
неча марта. Рақамлар ва ҳарфлардан
ташкил топган барча қисматўрлар '!'
га алмаштирилади:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Кодни бажариш натижаси:
'! ! ! ! @@@'
Мисол
Бу мисолда қидирув намунаси шундай
кўринади: рақам ЭМАС ва ҳарф ЭМАС бир
ёки бир неча марта. Бизнинг ҳолимизда
'@@@' ва барча бушлиқлар
(улар ҳам рақам ёки ҳарф эмас) шу таърифга
тўғри келади. Эътиборингизни қаратингки,
охирида битта '!' мавжуд - унга
' @@@' - олдида бушлиқ билан
сатр айлантирилди:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Кодни бажариш натижаси:
'1!12!123!Abc!'
Амалий вазифалар
Сатр берилган:
txt = 'a1a a2a a3a a4a a5a aba aca'
Регуляр ифодани ёзинг, у четларида
'a' ҳарфлари турадиган, уларнинг
ўртасида битта рақам турадиган
сатрларни топади.
Сатр берилган:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Регуляр ифодани ёзинг, у четларида
'a' ҳарфлари турадиган, уларнинг
ўртасида ҳар қандай миқдорда рақам турадиган
сатрларни топади.
Сатр берилган:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Регуляр ифодани ёзинг, у четларида
'a' ҳарфлари турадиган, уларнинг
ўртасида ҳар қандай миқдорда рақам (жумладан,
нол рақам, яъни 'aa' сатри) турадиган
сатрларни топади.
Сатр берилган:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Регуляр ифодани ёзинг, у куйидаги кўринишдаги
сатрларни топади: четларида 'a'
ва 'b' ҳарфлари турадиган, уларнинг
ўртасида - рақам эмас ва бушлиқ эмас.
Сатр берилган:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Регуляр ифодани ёзинг, у куйидаги кўринишдаги
сатрларни топади: четларида 'a'
ва 'b' ҳарфлари турадиган, уларнинг
ўртасида - ҳарф эмас, рақам эмас ва бушлиқ эмас.
Сатр берилган:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Регуляр ифодани ёзинг, у барча бушлиқларни
'!' га алмаштиради.