Многоредовост в регулярните изрази на Python
Регулярните изрази при работа с многоредови низове имат своите особености. Нека ги разгледаме с примера на следния низ, съдържащ обикновени символи, символи за нов ред и табулации:
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
'''
Поведение на точката
Командата '.' за многоредов низ
не улавя символите за нов ред:
res = re.sub('.', '!', txt)
print(res)
Резултат от изпълнението на кода:
'''
!!!
!!!!
!!!!
!!!!
'''
Всеки символ
За да уловите всички символи в многоредов
низ, се използва хитрият подход на
комбинацията [\s\S]. Такава конструкция
ще намери всички обикновени символи и всички нови
редове:
res = re.sub('[\s\S]', '!', txt)
print(res)
Резултат от изпълнението на кода:
'!!!!!!!!!!!!!!!!!!'
Долар
Командата '$' в многоредов режим
ще улавя края на всеки ред:
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
'''