Python да регуляр ифодаларда кўп қatorlik
Регуляр ифодалар кўп қatorли сатрлар билан ишлашда ўзига хос хусусиятларга эга. Келинг куйидаги оддий белгилар, сатр бушиш ва табуляция белгиларини ўз ичига олган сатр мисолида улар билан танишайлик:
txt = '''111
222
333
444'''
Сатр бушиш
Сатр бушиш белгилари '\n' командаси ёрдамида тутиб олинилиши мумкин:
res = re.sub('\n', '!', txt)
print(res)
Натижада куйидаги сатр чиқади (сатрлар орасидаги бўшлиқ - табуляция):
'111! 222! 333! 444'
Табуляция
Табуляция белгилари '\t' командаси ёрдамида тутиб олинилиши мумкин:
res = re.sub('\t', '!', txt)
print(res)
Коднинг ижроси натижаси:
'''
!111
!222
!333
!444
'''
Нуқтанинг иши
'.' командаси кўп қatorли сатр учун сатр бушиш белгиларини тутмайди:
res = re.sub('.', '!', txt)
print(res)
Коднинг ижроси натижаси:
'''
!!!
!!!!
!!!!
!!!!
'''
Хар қандай белги
Кўп қatorли сатрдаги барча белгиларни тутиб олиш учун [\s\S] шаклидаги ақлли усул ишлатилади. Бу конструкция барча оддий белгилар ва барча сатр бушишларни топади:
res = re.sub('[\s\S]', '!', txt)
print(res)
Коднинг ижроси натижаси:
'!!!!!!!!!!!!!!!!!!'
Доллар
'
командаси кўп қatorли режимда
ҳар бир сатрнинг охини топади:
res = re.sub('
, '!', txt)
print(res)
Коднинг ижроси натижаси:
'''
111!
222!
333!
444!
'''
Амалий масалалар
Сатр берилган:
'''
abc
def
ghi
jkl
'''
Бу сатрдан куйидаги сатрни яратадиган регуляр ифодани ёзинг:
'''
abc!
def!
ghi!
jkl!
'''
Сатр берилган:
'''
abc
def
ghi
jkl
'''
Бу сатрдан куйидаги сатрни яратадиган регуляр ифодани ёзинг:
'''
! abc
! def
! ghi
! jkl
'''
Сатр берилган:
'''
abc
def
ghi
jkl
'''
Бу сатрдан куйидаги сатрни яратадиган регуляр ифодани ёзинг:
'''!
abc
def
ghi
jkl
!'''
Сатр берилган:
'''
abc
def
ghi
jkl
'''
Бу сатрдан куйидаги сатрни яратадиган регуляр ифодани ёзинг:
'''!
! abc
! def
! ghi
! jkl
!'''
Сатр берилган:
'''
abc
def
ghi
jkl
'''
Бу сатрдан куйидаги сатрни яратадиган регуляр ифодани ёзинг:
'''!
abc!
def!
ghi!
jkl!
!'''
Сатр берилган:
'''
abc
def
ghi
jkl
'''
Бу сатрдан куйидаги сатрни яратадиган регуляр ифодани ёзинг:
'''
!abc
!def
!ghi
!jkl
'''