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