Golang의 중복 패턴 일치: 간단한 솔루션
Go의 regexp 패키지는 패턴 일치를 위한 강력한 기능을 제공하지만 기본적으로 중복에 대한 지원은 부족합니다. 성냥. 이 문제를 해결하기 위해 strings.Index 함수를 활용하는 간단하고 효율적인 접근 방식이 더 적합한 솔루션을 제공합니다.
다음 코드를 고려하세요.
input := "...#...#....#.....#..#..#..#......." idx := []int{} j := 0 for { i := strings.Index(input[j:], "..#..") if i == -1 { break } fmt.Println(j) idx = append(idx, j+i) j += i+1 } fmt.Println("Indexes:", idx)
이 스니펫에서 변수 입력은 대상 문자열. 입력 문자열 내에서 패턴 일치의 시작 인덱스를 저장하기 위해 idx라는 빈 정수 조각을 초기화합니다. j 변수는 검색에서 현재 위치를 추적합니다.
해결책의 핵심은 for 루프에 있습니다. ".#.." 패턴을 검색하기 위해 strings.Index를 반복적으로 호출합니다. 반환된 값 i는 인덱스 j에서 시작하는 패턴의 첫 번째 발생을 나타냅니다. i가 -1이 아니면 일치 항목을 찾은 것이며 idx 슬라이스에 시작 인덱스(j i)를 기록합니다. 그런 다음 j를 i 1씩 증가시켜 일치하는 문자 다음의 문자로 검색을 이동합니다.
루프는 더 이상 일치하는 문자가 없을 때까지 이 프로세스를 계속합니다. 그런 다음 입력 문자열에서 ".#.."의 모든 중복 일치 항목에 대한 시작 인덱스 목록을 얻습니다.
위 내용은 Go를 사용하여 문자열에서 겹치는 일치 항목을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!