한국어

초성 검색 정규식 만들기 — ㄱㅅ을 [가-깋][사-싷]로

초성 검색어를 음절 범위 정규식으로 바꾸고 바로 테스트

브라우저에서 처리 · 서버로 전송되지 않음

옵션
  • 정규식 패턴

    [가-깋][사-싷]
  • JavaScript 리터럴

    /[가-깋][사-싷]/gu
  • \u 이스케이프 패턴

    [\uAC00-\uAE4B][\uC0AC-\uC2F7]

    한글을 직접 쓸 수 없는 환경용이에요. ASCII 밖의 문자를 \uXXXX로 바꿨어요.

일치 4개

일치한 부분

감사합니다 기상 시간은 7시예요 사과 한 상자 고속버스 승차권 검색 결과

일치한 문자열

  • 감사 × 1
  • 기상 × 1
  • 고속 × 1
  • 검색 × 1

쌍자음 초성은 ㄲ ㄸ ㅃ ㅆ ㅉ 한 글자로 입력하세요. ㄱㄱ처럼 두 번 치면 초성이 ㄱ인 글자 두 개를 찾아요. 정규식은 u 플래그로 실행해요.

소개

초성 검색 정규식 생성기는 ’ㄱㅅ’처럼 초성으로 된 검색어를 ‘[가-깋][사-싷]’ 같은 정규식으로 바꿔 주는 도구예요. 연락처나 상품 목록에서 초성만 쳐도 결과가 나오게 하는 초성 검색을 직접 구현할 때, 매번 범위를 계산하지 않고 바로 복사해서 쓸 수 있어요. 만든 정규식은 아래 테스트 영역에서 곧바로 실행돼서 어떤 단어가 걸리고 어떤 단어가 빠지는지 강조 표시와 일치 개수로 확인할 수 있어요. 결과는 정규식 패턴, JavaScript 리터럴, 한글을 \uXXXX로 바꾼 이스케이프 패턴 세 가지로 나와요. 모든 처리는 브라우저 안에서 이루어지고 입력한 글은 어디에도 보내지 않아요.

사용법

  1. 초성 검색어 칸에 ㄱㅅ처럼 초성을 입력해요. 감ㅅ처럼 완성된 글자와 초성을 섞어도 돼요.
  2. 필요하면 옵션을 켜요. 초성 낱자도 맞추기, 받침 없는 글자 확장, 글자 사이 공백 허용 중에서 고를 수 있어요.
  3. 만들어진 정규식 패턴과 JavaScript 리터럴, \u 이스케이프 패턴 중에서 쓰려는 형식의 복사 버튼을 눌러요.
  4. 테스트할 글 칸에 실제 데이터와 비슷한 글을 넣고, 강조 표시와 일치 개수, 일치한 문자열 목록을 확인해요.

기준

  • 초성 범위: 유니코드 표준 3.12절의 한글 음절 배열에 따라 초성 번호 i(ㄱ=0 … ㅎ=18)는 시작 = 0xAC00 + i×588, 끝 = 시작 + 587인 범위가 돼요. 그래서 ㄱ은 [가-깋], ㄲ은 [까-낗], ㅅ은 [사-싷], ㅎ은 [하-힣]이에요. 초성으로 쓸 수 있는 자음은 ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ 19개이고, ㄳ 같은 겹받침 자모는 일반 문자로 그대로 맞춰요.
  • 두 낱자: ㄱㄱ은 ㄲ이 아니라 초성이 ㄱ인 글자 두 개로 처리해요.
  • 초성 낱자도 맞추기: 범위 안에 초성 자모 자체를 더해 [가-깋ㄱ]처럼 만들어요. 데이터에 ‘ㅋㅋ’ 같은 자모가 섞여 있을 때 유용해요.
  • 완성 음절: 검색어에 쓴 완성 음절은 그 글자 그대로 맞춰요. ’받침 없는 글자는 받침 있는 글자까지 포함’을 켜면 받침이 없는 음절은 그 음절부터 27자 뒤까지의 범위가 되어 ’가’가 [가-갛]이 되고 감, 각, 강도 함께 걸려요. 받침이 있는 음절은 그대로 둬요.
  • 공백: 기본은 검색어의 공백을 그대로 맞춰요. ’글자 사이 공백 허용’을 켜면 검색어의 공백은 지우고 글자 사이마다 \s*를 넣어요.
  • 이스케이프: 마침표, 괄호, 대괄호, 중괄호, 별표, 더하기, 물음표, 캐럿, 달러, 세로줄, 역슬래시, 슬래시는 앞에 역슬래시를 붙여요. 한자와 이모지는 한 글자 그대로 맞춰요.
  • 완성형(NFC)만 맞춰요: 만든 패턴은 완성형 음절 범위라서, macOS 파일 이름처럼 초성·중성·종성으로 풀린 첫가끝(NFD) 글자에는 걸리지 않아요. 테스트 영역은 붙여 넣은 글을 NFC로 합친 뒤 검사하지만, 실제 코드에서는 검사할 문자열에 normalize(‘NFC’)를 먼저 적용하세요.
  • 실행: 테스트 영역은 ‘gu’ 플래그로 실행해요. \u 이스케이프 패턴은 ASCII 밖의 문자를 UTF-16 코드 단위로 바꾼 것이라 원래 패턴과 같은 결과가 나와요.
  • 검색어는 100글자, 테스트할 글은 20,000자까지 넣을 수 있고, 일치는 앞쪽 5,000개까지 찾아요.

예시

검색어 옵션 정규식 걸리는 예 안 걸리는 예
ㄱㅅ 기본 [가-깋][사-싷] 감사, 기상, 고속 사과
ㅎㄱ 기본 [하-힣][가-깋] 한국, 학교 하까
감ㅅ 기본 감[사-싷] 감사, 감성 강사
ㄱㅅ 초성 낱자 [가-깋ㄱ][사-싷ㅅ] 감사, ㄱㅅ 사과
가ㅅ 받침 확장 [가-갛][사-싷] 가수, 각서, 감사 거사
ㄱ ㅅ 공백 허용 [가-깋]\s*[사-싷] 감사, 감 사 사 감

참고할 점

정규식 초성 검색은 목록이 수천 개 정도일 때 간단하고 빠르게 쓸 수 있어요. 데이터가 아주 많다면 초성만 따로 뽑아 저장해 두고 그 문자열에서 찾는 방식이 더 효율적일 수 있어요. 데이터베이스마다 정규식 문법과 유니코드 지원 정도가 다르니, 실제 환경에서 한 번 실행해 보고 쓰세요.

자주 묻는 질문

ㄱ이 왜 [가-깋]이 되나요?

유니코드의 한글 음절은 초성 순서대로 588자씩 묶여 있어요. 초성이 ㄱ인 글자는 가(U+AC00)부터 깋(U+AE4B)까지 이어져 있어서 이 범위 하나로 '초성이 ㄱ인 모든 글자'를 표현할 수 있어요.

ㄲ을 찾으려면 어떻게 입력해야 하나요?

자판에서 Shift를 누르고 친 ㄲ 한 글자로 입력하세요. ㄱㄱ처럼 두 번 치면 초성이 ㄱ인 글자 두 개를 찾는 [가-깋][가-깋]가 돼요.

다른 프로그래밍 언어에서도 쓸 수 있나요?

문자 클래스와 범위는 대부분의 정규식 엔진이 지원해요. 소스 파일에 한글을 직접 쓰기 어렵다면 \u 이스케이프 패턴을 쓰세요. JavaScript, Java, Python의 re 모듈은 \uXXXX를 알아듣지만, 엔진마다 문법이 조금씩 달라서 PCRE처럼 \x{AC00} 형식을 쓰는 곳도 있어요.

띄어쓰기가 있는 단어도 찾을 수 있나요?

옵션에서 '글자 사이 공백 허용'을 켜면 검색어의 공백은 무시하고 글자 사이마다 \s*를 넣어서 '감사'와 '감 사'를 모두 찾아요. 끄면 검색어에 쓴 공백을 그대로 맞춰요.

테스트 영역에 넣은 글은 저장되나요?

아니요. 정규식 생성과 일치 검사는 모두 브라우저 안에서 이루어지고, 입력한 글은 저장하거나 보내지 않아요.

필요한 도구가 있나요?