개요

멘토링을 하고 있는 멘티 한분에게 카톡으로 연락을 받았다. Make.com에서 Text Parser로 특정 값들을 추출하려고 하는데, 성공은 했지만 텍스트 하나하나 뽑을 때마다 이렇게 Operater를 써가며 뽑아야 되는지에 대한 질문이었다.
Make에서 이런 비효율적인 걸 두고 볼 것 같지는 않아서, 관련해서 좀 검색을 해봤는데, 다행히 바로 발견할 수 있었다.
How Can I extract 3 variables from a string with text parser
I’ve ready the pattern for NUMBER and EMAIL This is for email: (?([a-zA-Z0-9+.-]+@[a-zA-Z0-9.-]+.[a-zA-Z0-9_-]+)) This is for number: (?\d{11,12}) I need the name and how Can I put it on text prase module on make scenario and not working Thanks again
community.make.com
위 커뮤니티의 글을 바탕으로 여러 형태의 정규식을 쉽게 뽑아내는 방법에 대해 공유해보려고 한다.
1. Text Parser Match Pattern

위 사진과 같이 Make에서 특정 본문의 텍스트를 추추하기 위해서는 Text Parser의 Match pattern이라는 모듈을 사용하면 된다. 해당 모듈의 각 parameter에 대한 설명을 간략하게 해보자면
- Pattern : 텍스트를 추출할 정규식 패턴에 대해 정의한다.
- Global match : 정의한 패턴으로 추출되어야 하는 텍스트가 하나 이상이라면, Yes를 누를 경우 여러개의 텍스트를 추출할 수 있게 된다.
- Case Sensitive : 대소문자까지 일치해야하는지를 정의한다.
- Multiline : 본문의 텍스트를 여러줄을 하나의 줄로 처리할 것인지를 정의한다. 첫글자나 마지막 글자를 정의하는 정규식들에 영향이 갈 수 있다.
- Singleline : 본문의 텍스트가 한줄인지, 여러 줄인지에 대한 확인을 한다. 여러줄로 인식시킬 경우, 각 줄의 끝에 `\n`을 남긴다.
2. 여러개의 패턴 함께 추출하기
여러개 패턴의 글을 함께 추출하고 싶다면 .
- 본문의 형태가 어떤 패턴을 가지고 있는지
- 거기서 내가 추출해야하는 텍스트의 패턴은 무엇인지
- 내가 추출한 텍스트의 이름은 무엇으로 할 것인지
커뮤니티 글의 텍스트를 예시로 들었을 때, 텍스트는 아래와 같다.
a:3:{s:4:"name";s:14:"Carlos Herrera";s:5:"email";s:15:"dsdsd@gmail.com";s:5:"phone";s:13:"+584122677132";}
위 텍스트를 찬찬히 살펴보면, 본문의 형태는 `a:` 로 시작해서 `s:\d`로 값이 정해지고, 그 뒤에 이름과 이메일 ,폰번호 등이 나타난다. 이를 정규식으로 정리해보면 아래와 같이 정리할 수 있다.
{s:\d+:"name";s:\d+:"(.+?)";s:\d+:"email";s:\d+:"(.+?)";s:\d+:"phone";s:\d+:"(.+?)";}

이렇게만 정리할 경우, 모든 문자에 대해 `$1`,`$2`,`$3`과 같은 번호로 텍스트 추출이 된다. 그래서 추출된 텍스트의 이름을 바꿔주기 위해서는 아래와 같이 정규식을 바꿔야 한다.
{s:\d+:"name";s:\d+:"(?<name>.+?)";s:\d+:"email";s:\d+:"(?<email>.+?)";s:\d+:"phone";s:\d+:"(?<phone>.+?)";}
이렇게 괄호 () 안에 특정 패턴의 정규식을 넣고 그 앞에 `?<캡처 이름>`을 입력하면, 아래와 같이 번들에 각 정규식의 캡처 이름이 뜨게 된다.

4. 정규식 문법을 잘 모르겠을 때
개발이 익숙한 사람이 아니라면 정규식 문법에 대해서 잘 모르는 것도 있고 개발이 익숙한 사람도 정규식을 고민해서 추출하기란 쉬운 게 아니다..ㅋㅋ 그러다보니 혼자 고민해서 정규식을 추출하는 것보다, GPT의 도움을 받아서 정규식을 추출하는 것도 한 방법일 것 같은데, 나는 아래와 같이 본문과 함께 어떤 내용을 추출하고 싶은지 입력하고 정규식을 추출하는 편이다.

조금 유의해서 봐야 할 점은, 항상 정답은 아니니 테스트를 해서 검증할 필요는 있다고 생각한다. 또한, Make.com 의 변수명을 설정하는 것이 GPT에게는 아직 부족한 정보의 영역인지, `(?<변수명>)` 에 대한 부분은 잘 이야기 하지 못하는 것 같다. 정규식에 대한 참고만 받아서 사용해 보는 걸로 하자.
결론
정규식의 영역은 정말 다양하게 활용할 곳이 많은 것 같다. 단순히 텍스트 추출이라고 생각할 수도 있겠지만, 이게 데이터 정제의 역할이라 산발적인 데이터들을 Text Parser를 통해 깔끔하게 잘 정제가 되는 것 같다. GPT와 Make.com의 도움을 받아서 메일이나, 설문지의 텍스트 내용을 잘 추출하여 정확한 내용들을 잘 활용하길 바란다.