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
'''