본문 바로가기

Google Spreadsheet/사례별 Tips

[Tip] 특정 패턴 텍스트 추출하기

   split() 함수 개념 잡기

split() 함수는 (나눌 대상, 구분자, 개별분할옵션, 공백제거옵션)로 구성되어 있습니다.

 

'I know who you are'이라는 문장을 공백(" ")을 구분자로 나눈 결과입니다. B1:F1까지 나눈 결과값들이 한번에 출력되는 것을 확인하실 수 있습니다. 옵션값들은 True로 입력되어서 조정이 필요 없을 경우 딱히 입력 안해주셔도 됩니다.

 

하지만 꼭 필요한 경우가 아니라면 대부분 상황에선 개별분할 옵션을 꺼주세요. 기본적으로 True로 되어있습니다. 위 예시처럼 아무 옵션을 추가로 입력하지 않았지만, True가 기본으로 되어있어 공백과 같은 단일 텍스트로 나눠집니다. 여기서 위 문장을 " who " 를 구분자로 해서 "I know"와 "you are"로 나누고 싶을 경우 어떻게 해야할까요? 기본 옵션으로만 나눠보겠습니다.

 

의도했던 결과는 안나오고 이상하게 나눠진 결과가 보입니다. 그 이유는 개별분할 옵션이 켜져있는경우 구분자 내 각 텍스트 한글자마다 분할을 시행하기 때문입니다.  구분자 " who "에는 유니크하게 네글자가 있습니다. w,h,o,공백문자(띄어쓰기). split() 함수는 위와 같이 수식을 작성하면 w로도 나누고, h로도 나누고, o로도, 띄어쓰기로도 나누게 됩니다. 의도했던 것과 다르게 글자가 더 잘게 나눠지는 현상이 발생하게 되죠. 이러한 이슈를 해결하려면 옵션을 끄면됩니다, 해당 위치에 넣는 인자값에 False 또는 0을 넣어주면 됩니다.

 

의도했던 결과가 나오는 것을 알 수 있습니다.

 

   Split(), Index() 함수로 발라내기

찾으려는 텍스트가 특정 패턴으로 텍스트 내에 있다는게 확실하다면 사용할 수 있는 방법입니다. 예를들어, 쿠팡 상품을 조회했을 때 나오는 주소값을 예로 들어보겠습니다.

https://www.coupang.com/vp/products/330633297?itemId=1056707036&vendorItemId=5529944937

 

이 주소에서 숫자로 이루어진 프로덕트의 ID인 3307333297을 발라낼겁니다. split() 함수와 index() 함수를 사용해서요. 우선 split 함수로 "/products/" 뒤 텍스트만 발라내봅시다. 

 

A4:B4열에 두 셀을 차지하는 결과가 계산된 것을 알 수 있습니다. 여기서 저희가 뽑고자 하는 프로덕트 ID는 두번째로 나눠진 값에 위치합니다. 첫번째껀 필요없죠. index() 함수를 통해 두번째 결과값만 가져옵시다. index() 함수는 배열에서 원하는 순서의 값을 가져오는 함수입니다.

 

원하던 두번째 값만 가져오는 것을 확인할 수 있습니다. 이제 여기서 순수한 프로덕트 ID를 발라내기 위해선 뒤에 불필요한 텍스트들을 발라낼 필요가 있습니다. 방법은 똑같습니다. 나누고, 가져오기.

 

프로덕트 ID 뒤에 물음표(?)가 있다는 특징을 참고해서 물음표를 구분자로 두고 나눴습니다. 여기까지 나누니까 저희가 원하던 프로덕트 ID값이 나옵니다. 이제 나누기1에 있는 값만 가져오면 모든 계산이 완료됩니다. 방법은 똑같이 나눈 값에서 index() 함수를 통해 첫번째 값을 가져오시면 됩니다.

=index(split(index(SPLIT(A1,"/products/",0),2),"?",0),1)

 

index()와 split()함수를 각각 두번씩 써서 원하던 결과를 계산했습니다. 함수가 워낙 많이 중첩되어 있어서 나중에 다시 봤을 때 헷갈릴 수 있다는 단점이 있지만, 초보자가 가장 단순하고 빠르게 해결할 때에는 굉장히 유용합니다.

 

 

   정규표현식을 아시나요?

정규표현식(Regular Expression)은 텍스트 관련된 계산에서 활용할 수 있는 강력한 패턴 문법입니다. 다만 처음 접하는 사람들, 특히 프로그레밍에 익숙하지 않은 분들에겐 어렵게 느껴질 수 있습니다. 하지만 정규표현식을 활용하면 간단한 식으로 특정 패턴의 텍스트를 쉽게 삭제 및 교체가 가능합니다.

 

구글에는 정규표현식 관련 함수가 3개나 있습니다. 패턴과 일치하는지 평가해주는 regexmatch() 함수, 패턴과 일치하는 텍스트를 추출해주는 regexextract() 함수, 패턴과 일치하는 텍스트를 변경해주는 regexreplace() 함수가 있습니다.

 

여기서 regexextract() 함수를 이용해 아까와 똑같은 상황에서 프로덕트 ID를 추출하는 함수를 작성해보겠습니다.

=REGEXEXTRACT(A1,"products/([0-9]+)")

 

다음은 아이템 ID인 1056707036도 추출해봤습니다.

=REGEXEXTRACT(A1,"itemId=([0-9]+)")

 

간결합니다. 하지만 어렵습니다. 비즈니스 사용자들이 이것까지 공부하기엔 좀 무리가 있습니다. 하지만 정규표현식을 아시는 분이 계신다면 구글 스프레드시트에서도 유용하게 쓰실 수 있다는 점을 알려드리고자 이렇게 소개해드렸습니다. 잘 쓰면 정말 편한 함수이지요.