[go] 문자열 내부 검색하기

1. Substring 검색

특정 부분 문자열을 찾는 가장 기본적인 검색 방법은 strings.Contains 함수를 사용하는 것입니다. 이 함수는 대상 문자열이 특정 부분 문자열을 포함하고 있는지 여부를 판단합니다. 만약 포함되어 있다면 해당 문자열의 시작 위치를 반환하고 그렇지 않으면 -1을 반환합니다.

아래는 strings.Contains 함수의 예제 코드입니다:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "hello, world"
	substr := "world"
	if strings.Contains(str, substr) {
		fmt.Printf("%s를 찾았습니다.", substr)
	} else {
		fmt.Printf("%s를 찾지 못했습니다.", substr)
	}
}

2. 문자열 인덱스 검색

문자열 내에서 특정 문자나 문자열이 처음으로 나타나는 위치를 찾을 때는 strings.Index 함수를 사용합니다. 이 함수는 대상 문자열에서 지정된 부분 문자열이나 문자의 첫 번째 등장 위치를 찾아 반환합니다. 만약 대상 문자열에 해당 문자열이나 문자가 없다면 -1을 반환합니다.

아래는 strings.Index 함수의 예제 코드입니다:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "hello, world"
	char := "l"
	index := strings.Index(str, char)
	if index != -1 {
		fmt.Printf("%s가 처음으로 나타나는 위치: %d", char, index)
	} else {
		fmt.Printf("%s가 없습니다.", char)
	}
}

3. 정규표현식을 활용한 검색

복잡한 패턴이나 다양한 형식의 문자열을 검색할 때는 정규표현식을 사용하는 것이 유용합니다. Go에서는 regexp 패키지를 사용하여 정규표현식을 처리할 수 있습니다. regexp 패키지를 사용하여 문자열에서 패턴을 검색하고 추출하는 방법에 대해 알아보겠습니다.

아래는 정규표현식을 사용하여 문자열에서 패턴을 검색하는 예제 코드입니다:

package main

import (
	"fmt"
	"regexp"
)

func main() {
	str := "The quick brown fox jumps over the lazy dog"
	re := regexp.MustCompile("fox")
	indexes := re.FindStringIndex(str)
	if indexes != nil {
		fmt.Printf("패턴 'fox'의 시작 위치: %d", indexes[0])
	} else {
		fmt.Println("패턴을 찾지 못했습니다.")
	}
}

위의 예제에서는 regexp.MustCompile 함수를 사용하여 정규표현식을 컴파일하고, FindStringIndex 함수를 사용하여 문자열에서 해당 패턴의 시작 위치를 찾습니다.

이렇게 Go 언어에서는 strings 패키지와 regexp 패키지를 활용하여 문자열 내부에서의 검색 작업을 쉽게 수행할 수 있습니다.