Python 정규 표현식의 문자 그룹
특정 문자 그룹 전체를 한 번에 선택할 수 있는
특수 명령어들이 있습니다. \d 명령어는
0부터 9까지의 숫자를 의미합니다.
\w 명령어는 숫자, 라틴 문자 또는
밑줄 기호를 의미합니다. \s 명령어는
공백 또는 공백 문자(스페이스, 줄 바꿈, 탭)를
의미합니다. 명령어를 대문자로 작성하여 의미를
반전시킬 수 있습니다: 예를 들어, \d가
숫자라면 \D는 숫자가 아닌 문자를
의미합니다.
예시
모든 숫자를 찾아봅시다:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
코드 실행 결과:
'! !! !!!'
예시
반복 연산자들은 문자 그룹 명령어를 하나의 단위로 간주하므로, 그룹화 괄호가 필요하지 않습니다. 다음 예시에서 검색 패턴은 0부터 9까지의 숫자가 한 번 이상입니다:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
코드 실행 결과:
'! ! ! abc @@@'
예시
다음 예시에서 검색 패턴은 0부터 9까지의 숫자가 아닌 문자가 한 번 이상입니다:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
코드 실행 결과:
'123!3!'
예시
이 예시에서 검색 패턴은 공백 문자 한 번입니다:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
코드 실행 결과:
'1!12!123!abc!@@@'
예시
이 예시에서 검색 패턴은
공백 문자가 아닌 문자가 한 번 이상입니다.
공백으로 구분된 모든 하위 문자열이 '!'로
대체됩니다:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
코드 실행 결과:
'! ! ! ! !'
예시
이 예시에서 검색 패턴은
숫자 또는 문자가 한 번 이상입니다.
숫자와 문자로 구성된 모든 하위 문자열이
'!'로 대체됩니다:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
코드 실행 결과:
'! ! ! ! @@@'
예시
이 예시에서 검색 패턴은
숫자도 아니고 문자도 아닌 문자가 한 번 이상입니다.
이 정의에 따르면 우리의 경우 '@@@'와 모든 공백(공백도
숫자나 문자가 아니기 때문)이 해당됩니다.
마지막에 하나의 '!'가 있는 것에 주목하세요.
이것은 앞에 공백이 있는 문자열 ' @@@'가 변환된
것입니다:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
코드 실행 결과:
'1!12!123!Abc!'
실습 문제
다음 문자열이 주어집니다:
txt = 'a1a a2a a3a a4a a5a aba aca'
양쪽 끝에 문자 'a'가 있고,
사이에 숫자 하나가 있는 문자열을 찾는
정규식을 작성하세요.
다음 문자열이 주어집니다:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
양쪽 끝에 문자 'a'가 있고,
사이에 임의의 개수의 숫자가 있는 문자열을 찾는
정규식을 작성하세요.
다음 문자열이 주어집니다:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
양쪽 끝에 문자 'a'가 있고,
사이에 임의의 개수의 숫자(숫자가 0개인 경우,
즉 문자열 'aa'도 포함)가 있는
문자열을 찾는 정규식을 작성하세요.
다음 문자열이 주어집니다:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
다음 형태의 문자열을 찾는 정규식을 작성하세요:
양쪽 끝에 문자 'a'와 'b'가 있고,
사이에 숫자나 공백이 아닌 문자.
다음 문자열이 주어집니다:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
다음 형태의 문자열을 찾는 정규식을 작성하세요:
양쪽 끝에 문자 'a'와 'b'가 있고,
사이에 문자, 숫자, 공백이 아닌 문자.
다음 문자열이 주어집니다:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
모든 공백을 '!'로 대체하는 정규식을 작성하세요.