티스토리 뷰

개발자 로그/Python

정규표현식

현 알트만 2024. 9. 10. 19:42

Keyword: 정규표현식이란, 정규표현식의 유용성 

 

1. 정규표현식이란

 

 

 

정규표현식은 파이썬뿐만의 기능은 아니다. 문자열을 다루는 여러 곳에서 사용되는 공통적인 표현식이다. 기호가 다소 복잡하여 이해하기 어려울 수 있지만, 어떠한 일련의 문자열을 패턴화해서 사용하기 매우 유용한 방법이다. 

 

 

2. 정규표현식의 유용성

 

이제 정규표현식이 왜 유용한가에서 살펴보도록 하자. 위를 보면 peoples라는 변수에 '이름 : 전화번호'의 형식으로 연속된 정보 3개가 저장되어 있는 것을 확인할 수 있다. 이 문자열의 각 사람의 전화번호 끝 4자리를 XXXX형식으로 변경하고자 한다. 그러기 위해서는 리스트를 하나 만들고, 리스트를 공백으로 쪼개고, 쪼객 문자열이 13자이고(전화번호형식)이고, 인덱스 0에서 2번까지, 4에서 7번까지 9에서 12까지가 숫자 형식이면, 앞의 8자리를 그대로 슬라이싱하고, '-XXXX'의 문자열과 합치고, 이를 phone_x에 append한다. 그리고, peoples_new라는 변수를 선언하여 공백을 기준으로 phone_x의 값을 join하고 print한다. 굉장히 복잡한 과정임을 알 수 있다. 참고로 if문과 대비되는 else문은 '이름:'을 append할 수 있다. 

 

 

정규표현식을 사용하기 위해서는 re를 import해야 한다. 그리고 re의 sub함수를 사용한다. 함수 인자 안에는 "기존 문자열의 패턴, 바꿀 문자열의 패턴,  문자열'이 들어간다. 위 정규 표현식으로 해석하자면, r은 ' '(작은 따옴표)안에 있는 것들이 정규 표현식이라는 것을 나타내는 것이다. f-string에서 문자열 밖에 f를 하는 것과 같은 역할이다. 작은 따옴표 안에서는 괄호를 통해서 그룹화를 진행하고, 해당 그룹에 있는 값은 "d(십진수) {3} 3자리[-]하이픈 1개\그리고 d{4} (십진수 4자리)"라는 의미이고, 소괄호 밖에는 "[-]하이픈 1개 d{4}십진수 4자리"라는 의미이다. 즉 먼저 문자열의 패턴을 입력하고, 이것을 어떻게 처리할 것인가에 대해서 입력한다. r은 역시 정규 표현식임을 나타내는 표현이고, ' ' 안에 g<1>은 앞서 소괄호로 묶은 그룹 첫번째를 의미하고, -XXXX는  [-]d{4}가 대치될 형식이다. 그리고 마지막에 문자열을 입력하면 된다. 정규 표현식으로 지정한 방식으로 문자열과 매칭이 되어, 사용자가 지정한 형식으로 출력이 되게 된다. 위 출력을 보면 각 전화번호 끝자리가 'XXXX'처리 된 것을 확인할 수 있다. 

 

아래 셀의 경우, 문자열의 일련의 패턴을 re.compile()함수에 넣어 값을 pat 변수에 입력한다. 이는 미리 정규표현식을 컴파일하여 변수에 넣어 여러번 사용할 때 유용하게 사용된다. 그리고, 이를 sub 함수에 넣고 정규 표현식  형식으로 사용한다. 이때는 기존 문자열의 정규 표현식 패턴을 인자로 입력하지 않아도 된다. 

'개발자 로그 > Python' 카테고리의 다른 글

[실습] 엑셀 파일 다루기  (0) 2024.09.11
[실습] 워드 클라우드  (0) 2024.09.11
함수  (0) 2024.09.10
제어문(조건문, 반복문)  (0) 2024.09.09
딕셔너리(dictionary) 자료형  (0) 2024.09.06