[Go] 正規表現のサブマッチ(キャプチャグループ)にマッチした文字列を得る
作成日: 2022年04月28日
regexp
パッケージの FindAllStringSubmatch
関数を使用すると、正規表現のサブマッチ(キャプチャグループ)した文字列を全て取得することができます。FindAllStringSubmatch
関数の第 1 引数には検索対象とする文字列、第 2 引数にはマッチした結果をいくつ返すかを示す数値を渡します。ここでは、マッチした結果を全て返すように -1
を指定しています。関数の結果は 2 次元の文字列の配列が返されます。2 次元目の配列は、0 番目の要素にマッチした文字列、1 番目の要素にサブマッチした文字列が含まれています。
package main
import (
"fmt"
"regexp"
)
func main() {
str := "abc adc aec"
r := regexp.MustCompile(`a(.+?)c`)
matches := r.FindAllStringSubmatch(str, -1)
fmt.Println(matches)
}
実行結果
[[abc b] [adc d] [aec e]]