brunch

매거진 데이터 101

You can make anything
by writing

C.S.Lewis

by 져니박 Apr 11. 2023

똑똑하게 데이터 4탄 : 패턴

정규식 전환 쉽게 하려면? ChatGPT도 좋지만 기획 의도가 명확해야

어떠한 온라인 설문조사에 참여하거나, 이벤트를 신청하는 경우 개인정보 중에 한번 더 입력을 요구받는 문항이 있습니다. 많은 경우 그것은 연락처, 즉 휴대폰 번호입니다.

전화번호를 올바르게 입력하세요. (예: 01012345678) 
휴대폰 번호를 하이픈('-') 빼고 숫자만 입력하세요. 

그러고 나서 다음 문항에서 휴대폰 번호를 한번 더 입력받는 경우도 있습니다. 잘못 입력하는 경우가 많으니 그런 것이겠죠?



올바르게 입력하라는 요청은

특정 패턴에 부합하는지를 묻는 것


네이버 폼이나 구글 설문의 경우 "-"뿐 아니라 띄어쓰기(스페이스 바), 특수문자나 영문 등등 들어갈 수 있다 칩시다. 그런데 서비스 안에서 회원가입 단계나 로그인 후 개인정보를 수정할 때도 동일한 상황은 펼쳐집니다. 과연 잘못된 전화번호 입력은 무엇이고, 올바르게 입력하는 것은 무엇일까요? 컴퓨터는 무엇이 옳고 그른지를 어떻게 판별할 수 있는 것일까요?


regex 정규식은 데이터의 정확한 입력을 보장하는 방식입니다. 완전히 일치나 목록 안에 포함되었는지를 확인하는 것은 아니고 특정 패턴에 '매칭'되는지를 물어보고, 매칭되면 통과시키는 것입니다. 다음은 위키피디아에서 확인한 regex의 목적입니다.


정규식 (정규표현식, RegEx 또는 Regular Expression)

일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해 특정한 표준의 텍스트 신택스를 의미하기 위해 사용된다. 정규 표현식의 각 문자(즉, 패턴을 기술하는 문자열 안의 각 문자)는 메타문자(특별한 의미로)로 이해되거나 정규 문자('문자 그대로', 즉 '리터럴'의 의미로)로 이해된다.


예를 들어, 하이픈 제외하고 휴대폰 번호 숫자 11자리를 입력하라는 것은, 다음 정규식을 컴퓨터에 물어봐서, 숫자로만 11자리가 맞나? 맞다 => 올바른 입력, 아니다 =>잘못된 입력으로 답변을 받는 것입니다. 

 /^\d{11}$/ = 숫자(d)로만 11자리({11})를 입력받는 것이 해당 정규식의 시작(/^)과 끝($/)이다. 

이때, 0에서 9까지 즉 숫자에 대한 입력을 받고자 하면, 프로그래밍 언어에 따라, '[0-9]' 또는'\d'로 표현됩니다. 0과 9는 정규 문자이지만, 'd'는 알파벳 d가 아닌 digit 즉 숫자라는 뜻의 메타 문자입니다. 그리고 메메타 문자를 구분하기 위해 '\'라는 이스케이프 문자를, 정규식은 일반 영문이나 숫자와 구분되어야 하다 보니 처음 '/^', 끝을 '$/'로 표기합니다. 



그럼에도 올바른 답이 무엇인지는
여전히 만드는 사람의 의도에 달려있어


ChatGPT 그리고 이를 활용한 서비스들이 나오면서, 많은 콘텐츠 창작 그리고 구현하는 부분이 일상적인 대화 몇 마디만으로 가능하다는 것이 확인되었습니다. 특히 아날로그보다 디지털, 간단한 코딩은 대체가 쉽게 되는 것이 확인되었습니다. '유효한 전화번호 매칭시켜 줘 ( match valid phone number )'라고 입력하니 바로 정규식을 던져주는 AutoRegex 서비스가 그 예시입니다. 바로 Ctrl+C, Ctrl+V 붙여넣기도 됩니다.


그런데 말입니다. 이 간단한 것조차도, 사람(기획자)의 의도와 요청에 따라 필요한 정규식은 달라집니다.


AutoRegex. 영어로 입력하면, 정규식으로 전환시켜주는 생성 AI 예


전화번호의 예시로 다시 돌아와서, 처음 언급했던 대로 하이픈 빼고 ' /^\d{11}$/' 숫자 11자리만 입력받을 수도 있고요. 왼쪽처럼 단순히 하이픈을 유지한 채로 받을 것인지, 오른쪽처럼 (미국의) 지역번호를 고려해 맨 첫째 자리를 0과 1 제외, 2부터 9까지의 숫자로만 받을 것인지 달라지는 것입니다.


전화번호뿐 아니라 '올바른' 이메일 주소가 무엇인지, '최소한에 만족해야 할' 비밀번호 규칙도 정규식을 사용하는 경우입니다. 단 하나의 정규식은 없습니다. 정규식 패턴이 FM대로 한 치의 오차도 없이 정해지는 경우가 있고, 전체 자릿수나 숫자라는 것만 맞으면 OK~ 하고 통과시켜 주는 경우도 있습니다. 진짜 정확한 입력이 필요하면 정규식이 더 상세하게 기술되겠지만, 그만큼 코드도 길어지고 화면에서 보일, 잘못된 입력에 대한 안내 문구도 더 길어집니다. 그럼에도 정확한 정보를 입력받는 것에 방점을 둔다면 이러한 선택을 하는 것입니다. 


똑똑하게 '올바른' 데이터를 받고자 구글 검색뿐 아니라 ChatGPT의 도움을 받고자 했으나, 역시나 근본적으로 왜, 어디서, 어떤 데이터가 필요한 지에 대한 명확한 의도가 있어야 '똑똑하게' 정의할 수 있는 것입니다.


"ChatGPT, 이것이 옳고 저것이 틀린 거야. 왜냐하면..." 

사진: Unsplash의Adam Winger


져니박 씀.



매거진의 이전글 똑똑하게 데이터 3탄 : 열거형
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari