![[정규식 01] 정규식이 뭐고 왜 쓰나요](https://img.thenullpage.com/posts/6585/6585_1_06c4f0.webp)
안녕하세요! 이 글은 정규식(정규 표현식)을 난생처음 보는 분을 위한 첫걸음이에요. 정규식이 뭔지, 그리고 왜 굳이 배워야 하는지부터 아주 천천히, 예제와 함께 알려드릴게요. 낯선 기호가 나와도 걱정하지 마세요. 지금은 '아, 이래서 편하구나' 하는 느낌만 잡으면 충분하고, 기호 하나하나는 쉬운 것부터 차차 익히면 되니까요. 자, 편하게 시작해 볼게요.
01.1 정규식이 대체 뭐예요?
정규식은 한마디로 '글자들의 패턴(형태)을 적는 작은 언어'예요. 여기서 패턴이란 '이런 모양으로 생긴 글자'라는 규칙을 뜻해요. 예를 들어 '숫자 세 개, 붙임표, 숫자 네 개, 붙임표, 숫자 네 개' 같은 규칙을 짧은 기호로 적어 두면, 컴퓨터가 그 모양에 딱 맞는 글자들을 알아서 찾아 준답니다.
어렵게 들리지만 원리는 단순해요. 우리가 '전화번호는 이렇게 생겼지', '이메일은 저렇게 생겼지' 하고 머릿속에 떠올리는 그 '모양'을, 컴퓨터도 알아듣도록 기호로 옮겨 적은 것뿐이에요. 그래서 정규식을 패턴 매칭(모양 맞추기) 도구라고도 불러요. 사람은 모양을 눈으로 알아보고, 정규식은 그 모양을 기호로 알아보는 거죠.
01.2 Ctrl+F 찾기랑 뭐가 달라요?
문서에서 Ctrl+F(찾기 기능)를 눌러 단어를 찾아본 적 있으시죠? 그건 정말 편리하지만, '정확히 이 단어'만 찾아 줘요. 예를 들어 apple을 찾으면 딱 apple만 나오죠. 미리 정확한 단어를 알고 있어야 쓸 수 있는 도구예요.
정규식은 여기서 한 걸음 더 나아가요. '전화번호처럼 생긴 것 전부', '이메일처럼 생긴 것 전부'를 한 번에 찾아 줘요. 정해진 단어가 아니라 모양(패턴)으로 찾는다는 게 가장 큰 차이예요. 그래서 무엇이 나올지 미리 다 알지 못해도, '이런 모양'이라고만 알려 주면 컴퓨터가 알아서 골라 줘요. 번호가 010으로 시작하든 011로 시작하든, '전화번호 모양'이기만 하면 전부 잡아 오는 거죠. 이 한 가지 차이가 생각보다 엄청난 힘을 발휘한답니다.
01.3 정규식은 어디에 쓰여요?
정규식이 활약하는 자리는 생각보다 정말 많아요. 몇 가지만 예로 들어볼게요. 첫째, 검색과 바꾸기예요. 문서 편집기나 코드 편집기에서 '이런 모양을 찾아서 저렇게 바꿔라'를 한 번에 해낼 수 있어요. 둘째, 입력값 검사예요. 회원가입 창에서 이메일이나 전화번호를 형식에 맞게 입력했는지 확인할 때 아주 많이 쓰여요.
셋째, 데이터 정리예요. 지저분하게 섞인 글에서 필요한 정보만 뽑아내거나, 불필요한 공백과 기호를 걷어낼 때 유용하고요. 넷째로 기록(로그) 분석도 빼놓을 수 없어요. 서버가 남긴 어마어마한 기록에서 특정 날짜나 오류만 골라 세는 일은 정규식이 없으면 정말 막막해요. 이렇게 '글자를 다루는 일'이라면 어디든 정규식이 슬쩍 끼어들어 도와준다고 보면 돼요. 그래서 개발자뿐 아니라 데이터를 만지는 사람이라면 한 번쯤 배워 두면 두고두고 써먹는 기술이랍니다.
01.4 전화번호만 쏙 뽑아낼 수 있어요?
이제 진짜 예제를 볼게요. 게시글 본문에 이런저런 글자가 섞여 있는데, 그중에서 휴대폰 번호만 골라내고 싶다고 해 봐요. 사람이라면 눈으로 훑어서 찾겠지만, 정규식에게는 '숫자 3개, 붙임표, 숫자 4개, 붙임표, 숫자 4개' 모양이라고 알려 주면 끝이에요.
패턴: \d{3}-\d{4}-\d{4}
대상: 연락처 010-1234-5678 또는 02-9999
매치: ['010-1234-5678']
여기서 \d는 '숫자 한 개'를, {3}은 '바로 앞의 것을 정확히 세 번'을 뜻해요(이 기호들은 지금 몰라도 괜찮아요. 차차 익히면 돼요). 결과를 보면 형식에 딱 맞는 010-1234-5678만 뽑혔죠? 뒤에 있던 02-9999는 자릿수 모양이 안 맞아서 저절로 빠졌어요. 우리가 '이런 모양'이라고 정해 준 틀에 안 맞으니 알아서 걸러진 거예요. 이렇게 '내가 원하는 모양'만 정확히 추려 낼 수 있다는 게 정규식의 첫 번째 매력이에요.
01.5 이메일 주소도 한 번에 모을 수 있나요?
이번엔 문의 글에 적힌 이메일 주소만 쭉 모으고 싶어요. 이메일은 보통 '이름, 골뱅이(@), 도메인, 점, 무언가' 모양이잖아요? 그 모양을 그대로 적어 주면 돼요.
패턴: \w+@\w+\.\w+
대상: 문의 [email protected] 또는 [email protected]
매치: ['[email protected]', '[email protected]']
@와 점을 기준으로 '이메일 모양'을 묘사한 거예요. 두 개 다 깔끔하게 찾아냈죠? 그런데 여기서 솔직하게 한 가지 짚고 갈게요. 이 패턴은 교육용 근사 패턴(대충 비슷하게 잡는 패턴)이라서 완벽하진 않아요. 진짜 이메일 규격은 훨씬 복잡해서, 정규식만으로 100% 검증하기는 사실상 어려워요. 그래서 실무에서는 '모양 걸러 내기'까지만 정규식으로 하고, 진짜 확인은 인증 메일을 실제로 보내 보는 식으로 한답니다. 이 점은 앞으로도 계속 나오니 지금 살짝 기억해 두세요.
01.6 왜 꼭 손으로 안 하고 정규식을 써요?
'그냥 눈으로 찾으면 되지, 뭐 하러 배워요?'라고 생각할 수 있어요. 맞아요, 몇 줄짜리 짧은 글이면 눈으로 찾는 게 더 빨라요. 그런데 10만 줄짜리 기록(로그)에서 날짜를 전부 찾아 세야 한다면 어떨까요? 사람 눈으로는 하루 종일 해도 못 끝내고, 중간에 실수도 잔뜩 생겨요. 몇 개는 빠뜨리고, 몇 개는 잘못 세고요.
패턴: \d{4}-\d{2}-\d{2}
대상: 2024-01-15 and 2025-12-31
매치: ['2024-01-15', '2025-12-31']
'숫자 4개, 붙임표, 숫자 2개, 붙임표, 숫자 2개' 모양이라고 한 줄만 적어 주면, 정규식은 2024-01-15와 2025-12-31 같은 날짜를 순식간에 전부 찾아 줘요. 대상이 10만 줄이든 100만 줄이든 속도는 거의 똑같아요. 지치지도 않고, 실수도 없고요. 바로 이게 정규식을 배우는 진짜 이유예요. 사람이 반복하기 지겨운 대량 작업을, 눈 깜짝할 새에 대신 처리해 주니까요. 데이터 정리, 검색, 입력값 검사 같은 일에서 정규식은 정말 든든한 친구가 돼요.
01.7 정규식, 배우기 어렵지 않을까요?
기호가 잔뜩 나오니 어렵게 느껴질 수 있는데, 사실 정규식은 레고 블록이랑 비슷해요. 오늘 본 \d(숫자), {3}(세 번), 붙임표 같은 작은 조각들을 하나씩 익힌 다음, 그 조각을 이리저리 이어 붙여 원하는 모양을 만드는 거예요. 한꺼번에 다 외우려 하면 부담스럽지만, 조각 하나하나는 정말 단순하거든요.
그러니 조급해하지 마세요. 오늘은 '정규식이 무슨 일을 해 주는지'만 알면 되고, 조각들은 하나씩 천천히 손에 익히면 돼요. 처음엔 눈에 안 들어오던 기호도, 몇 번 써 보면 어느새 익숙해져 있을 거예요. 누구나 처음엔 다 낯설게 시작한답니다.
01.8 오늘 배운 내용 정리
오늘 핵심만 다시 짚어 볼게요. 정규식은 '글자의 모양(패턴)으로 찾는 작은 언어'예요. Ctrl+F가 정해진 단어만 찾는다면, 정규식은 전화번호나 이메일처럼 '이렇게 생긴 것 전부'를 한 번에 잡아 줘요. 짧게 한 줄 적어 두면 10만 줄도 순식간에 처리하고요. 검색, 바꾸기, 입력값 검사, 데이터 정리까지 쓰임새도 아주 넓어요.
아직 \d나 {3} 같은 기호가 낯설어도 전혀 괜찮아요. 이 기호들은 하나씩 익히다 보면 금방 친해져요. 오늘은 '정규식이 왜 이렇게 편한지' 그 느낌만 확실히 잡으셨다면 충분해요. 여기까지 따라오신 것만으로도 정말 잘하신 거예요!