Pythonda RegEx-larda ko'p qatorlilik
Ko'p qatorli satrlar bilan ishlashda muntazam ifodalar o'ziga xos xususiyatlarga ega. Keling, quyidagi satr misolida ularni ko'rib chiqaylik, unda oddiy belgilar, qator almashish belgilari va tabulyatsiyalar mavjud:
txt = '''111
222
333
444'''
Qator almashishi
Qator almashish belgilarini '\n' buyrug'i
yordamida ushlash mumkin:
res = re.sub('\n', '!', txt)
print(res)
Natijada quyidagi satr chiqadi (qatorlar orasidagi bo'shliqlar - bu tabulyatsiya):
'111! 222! 333! 444'
Tabulyatsiya
Tabulyatsiya belgilarini '\t' buyrug'i
yordamida ushlash mumkin:
res = re.sub('\t', '!', txt)
print(res)
Kodni bajarish natijasi:
'''
!111
!222
!333
!444
'''
Nuqta ishlashi
'.' buyrug'i ko'p qatorli satrlar uchun
qator almashish belgilarini ushlamaydi:
res = re.sub('.', '!', txt)
print(res)
Kodni bajarish natijasi:
'''
!!!
!!!!
!!!!
!!!!
'''
Har qanday belgi
Ko'p qatorli satrdagi barcha belgilarni ushlash
uchun [\s\S] kombinatsiyasidan foydalaniladi.
Bunday konstruksiya barcha oddiy belgilar va barcha
qator almashishlarini topadi:
res = re.sub('[\s\S]', '!', txt)
print(res)
Kodni bajarish natijasi:
'!!!!!!!!!!!!!!!!!!'
Dollar
'
buyrug'i ko'p qatorli rejimda
har bir qatorning oxirini ushlaydi:
res = re.sub('
', '!', txt)
print(res)
Kodni bajarish natijasi:
'''
111!
222!
333!
444!
'''
Amaliy vazifalar
Satr berilgan:
'''
abc
def
ghi
jkl
'''
Quyidagi satrni yasaydigan muntazam ifodani yozing:
'''
abc!
def!
ghi!
jkl!
'''
Satr berilgan:
'''
abc
def
ghi
jkl
'''
Quyidagi satrni yasaydigan muntazam ifodani yozing:
'''
! abc
! def
! ghi
! jkl
'''
Satr berilgan:
'''
abc
def
ghi
jkl
'''
Quyidagi satrni yasaydigan muntazam ifodani yozing:
'''!
abc
def
ghi
jkl
!'''
Satr berilgan:
'''
abc
def
ghi
jkl
'''
Quyidagi satrni yasaydigan muntazam ifodani yozing:
'''!
! abc
! def
! ghi
! jkl
!'''
Satr berilgan:
'''
abc
def
ghi
jkl
'''
Quyidagi satrni yasaydigan muntazam ifodani yozing:
'''!
abc!
def!
ghi!
jkl!
!'''
Satr berilgan:
'''
abc
def
ghi
jkl
'''
Quyidagi satrni yasaydigan muntazam ifodani yozing:
'''
!abc
!def
!ghi
!jkl
'''