Гурӯҳҳои рамзҳо дар ибораҳои мунтазами Python
Фармонҳои махсус мавҷуданд, ки
имкон медиҳанд, ки ҳамаи гурӯҳи
рамзҳоро якбора интихоб кунед. Фармони \d рамзи ададиро
аз 0 то 9 ифода мекунад.
Фармони \w
рақам, ҳарфи лотинӣ ё аломати зерихатро
ифода мекунад. Фармони \s фосила ё рамзи фосиларо
ифода мекунад: фосила,
сатри нав, табулятсия. Қимати
фармонро бо навиштани ҳарфи калон инверт кардан мумкин аст:
масалан, агар \d - рақам бошад, пас
\D - рақам нест.
Намуна
Биёед ҳамаи рақамҳоро пайдо кунем:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Натиҷаи иҷрои рамз:
'! !! !!!'
Намуна
Операторҳои такрорӣ фармонҳои-гурӯҳҳоро
як воҳид ҳисоб мекунанд, яъне қафсҳои гурӯҳбандӣ
лозим нестанд. Дар намунаи навбатӣ шаблони ҷустуҷӯ
ба ин шакл аст: рақам аз 0 то
9 як ё зиёда маротиба:
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'
Ибораи мунтазамро нависед, ки ҳамаи
фосилаҳоро ба '!' иваз кунад.