Python 정규식에서의 다중 행 처리

다중 행 문자열을 처리할 때 정규식은 특별한 점이 있습니다. 다음과 같이 일반 문자, 줄 바꿈 문자, 탭 문자가 포함된 문자열을 예제로 사용하여 알아보겠습니다:

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

줄 바꿈 문자

줄 바꿈 문자는 '\n' 명령어로 잡을 수 있습니다:

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

다음 문자열이 출력됩니다 (행 사이의 간격은 탭입니다):

python'111!  222!  333!  444'

탭 문자

탭 문자는 '\t' 명령어로 잡을 수 있습니다:

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

코드 실행 결과:

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

점(.)의 동작

다중 행 문자열에서 '.' 명령어는 줄 바꿈 문자를 잡지 않습니다:

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

코드 실행 결과:

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

모든 문자

다중 행 문자열에서 모든 문자를 잡기 위해 [\s\S] 조합이라는 교묘한 방법을 사용합니다. 이 패턴은 모든 일반 문자와 줄 바꿈 문자를 찾습니다:

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

코드 실행 결과:

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

달러($)

다중 행 모드에서 ' 명령어는 각 행의 끝을 잡습니다:

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

코드 실행 결과:

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

실습 문제

Задание 1

다음 문자열이 주어집니다:

python'''
  abc
  def
  ghi
  jkl
'''

이 문자열을 다음과 같이 변환하는 정규식을 작성하세요:

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

다음 문자열이 주어집니다:

python'''
  abc
  def
  ghi
  jkl
'''

이 문자열을 다음과 같이 변환하는 정규식을 작성하세요:

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

다음 문자열이 주어집니다:

python'''
  abc
  def
  ghi
  jkl
'''

이 문자열을 다음과 같이 변환하는 정규식을 작성하세요:

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

다음 문자열이 주어집니다:

python'''
  abc
  def
  ghi
  jkl
'''

이 문자열을 다음과 같이 변환하는 정규식을 작성하세요:

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

다음 문자열이 주어집니다:

python'''
  abc
  def
  ghi
  jkl
'''

이 문자열을 다음과 같이 변환하는 정규식을 작성하세요:

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

다음 문자열이 주어집니다:

python'''
  abc
  def
  ghi
  jkl
'''

이 문자열을 다음과 같이 변환하는 정규식을 작성하세요:

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