위키득계정 ↗
기술

문자열 검색

문자열 검색기술
영문명
String matching
입력
텍스트와 패턴
대표 결과
일치 위치 또는 존재 여부
정확 검색
패턴 전체가 연속해서 일치
문자열 검색은 텍스트 안에서 주어진 패턴 문자열이 나타나는 위치를 찾는 문제다. 패턴이 연속해서 정확히 일치하는 검색과 오차를 허용하는 검색을 구별한다.

위치 찾기

텍스트 ABABA에서 패턴 ABA는 0부터 세면 위치 0과 2에서 나타난다. 두 일치 구간이 겹칠 수도 있다. 첫 결과만 필요한지 모든 결과가 필요한지에 따라 종료 조건이 달라진다.

단순한 비교

가능한 시작 위치마다 패턴 문자를 차례로 비교하는 방법이 있다. 구조가 간단하지만 같은 부분을 반복해서 비교할 수 있다. 텍스트 길이 n과 패턴 길이 m을 함께 고려해 비용을 평가한다.

패턴 정보를 재사용

KMP 같은 알고리즘은 패턴의 구조를 미리 분석해 실패한 비교 뒤에도 이미 맞춘 정보를 활용한다. 다른 알고리즘은 뒤쪽 문자부터 비교하거나 해시를 이용한다. 문제는 같아도 필요한 전처리와 비용은 다르다.

검색 조건의 선택

대소문자 구별, 문자 표현의 정규화, 빈 패턴의 의미 등을 정해야 한다. 단순한 문자 일치와 정규 표현식 검색은 같은 기능이 아니다. 큰 문서 집합을 반복 검색하는 문제에서는 색인 구축도 별도로 고려할 수 있다.

관련 문서

문자열 / KMP 알고리즘 / 정규 표현식 / 해시 함수 / 알고리즘 / 시간 복잡도 / 배열 / 역색인