Daugiaeilystė Python reguliariosiose išraiškose

Reguliariosios išraiškos, dirbant su kelių eilučių eilutėmis, turi savo ypatumų. Leiskite su jais susipažinti naudojant šios eilutės pavyzdį, kuriame yra įprastų simbolių, eilutės pertraukimo ir tabuliacijos simbolių:

pythontxt = '''111
  222
  333
  444'''

Eilutės pertrauka

Eilutės pertraukos simbolius galima pagauti naudojant komandą '\n':

pythonres = re.sub('\n', '!', txt)
print(res)

Rezultate bus išvesta tokia eilutė (tarpai tarp eilučių - tai tabuliacija):

python'111!  222!  333!  444'

Tabuliacija

Tabuliacijos simbolius galima pagauti naudojant komandą '\t':

pythonres = re.sub('\t', '!', txt)
print(res)

Kodo vykdymo rezultatas:

python'''
!111
!222
!333
!444
'''

Taško veikimas

Komanda '.' kelių eilučių eilutei negauna eilutės pertraukos simbolių:

pythonres = re.sub('.', '!', txt)
print(res)

Kodo vykdymo rezultatas:

python'''
  !!!
  !!!!
  !!!!
  !!!!
'''

Bet koks simbolis

Norint pagauti visus simbolius kelių eilučių eilutėje, naudojama gudri priemonė, pvz., derinys [\s\S]. Tokia konstrukcija ras visus įprastus simbolius ir visus eilutės pertraukimus:

pythonres = re.sub('[\s\S]', '!', txt)
print(res)

Kodo vykdymo rezultatas:

python'!!!!!!!!!!!!!!!!!!'

Dolerio ženklas

Komanda ' kelių eilučių režime gins kiekvienos eilutės pabaigą:

pythonres = re.sub('
', '!', txt)
print(res)

Kodo vykdymo rezultatas:

python'''
  111!
  222!
  333!
  444!
'''

Praktinės užduotys

Задание 1

Duota eilutė:

python'''
  abc
  def
  ghi
  jkl
'''

Parašykite reguliariąją išraišką, kuri šią eilutę paverstų tokia:

python'''
  abc!
  def!
  ghi!
  jkl!
'''
Задание 2

Duota eilutė:

python'''
  abc
  def
  ghi
  jkl
'''

Parašykite reguliariąją išraišką, kuri šią eilutę paverstų tokia:

python'''
!  abc
!  def
!  ghi
!  jkl
'''
Задание 3

Duota eilutė:

python'''
  abc
  def
  ghi
  jkl
'''

Parašykite reguliariąją išraišką, kuri šią eilutę paverstų tokia:

python'''!
  abc
  def
  ghi
  jkl
!'''
Задание 4

Duota eilutė:

python'''
  abc
  def
  ghi
  jkl
'''

Parašykite reguliariąją išraišką, kuri šią eilutę paverstų tokia:

python'''!
!  abc
!  def
!  ghi
!  jkl
!'''
Задание 5

Duota eilutė:

python'''
  abc
  def
  ghi
  jkl
'''

Parašykite reguliariąją išraišką, kuri šią eilutę paverstų tokia:

python'''!
  abc!
  def!
  ghi!
  jkl!
!'''
Задание 6

Duota eilutė:

python'''
  abc
  def
  ghi
  jkl
'''

Parašykite reguliariąją išraišką, kuri šią eilutę paverstų tokia:

python'''
  !abc
  !def
  !ghi
  !jkl
'''