Go で重複する一致を見つける
指定された文字列内のパターン .#.#.. のインデックスを見つけたいとしますが、 Go は、組み込みの FindAllStringSubmatchIndex 関数で重複する一致をサポートしていません。これに対処するために、次の回答は、正規表現の代わりに strings.Index とループを使用する代替アプローチを提案しています。
import ( "fmt" "strings" ) func main() { input := "...#...#....#.....#..#..#..#......." idx := []int{} j := 0 for { i := strings.Index(input[j:], "..#..") if i == -1 { break } idx = append(idx, j+i) j += i + 1 } fmt.Println("Indexes:", idx) }
このアプローチは、strings.Index を使用してパターンのインデックスを反復的に検索し、それを入力文字列でパターンが見つからなくなるまで、インデックスのスライスを続けます。これはよりシンプルで効率的であり、この特定のタスクに対する正規表現の制限を回避します。
以上がGo 文字列で重複する一致を見つける方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。