はじめに
Go言語内の文字列の判定で正規表現を使う際の“regexp”ライブラリについてまとめる
使い方
MatchString
正規表現のフォーマットに沿った文字列か確認し、True/Falseを返す
match, _ := regexp.MatchString("b([a-z]+)a", "banana") fmt.Println(match)
結果
true
しかし、この書き方では複数の文字に対してチェックしたい場合、都度正規表現を書かなくてはならない。
MustCompile
以下の書き方をすることで正規表現の定義は一度のみでよくなる
r := regexp.MustCompile("b([a-z]+)a") ms1 := r.MatchString("banana") fmt.Println(ms1) ms2 := r.MatchString("apple") fmt.Println(ms2) ms3 := r.MatchString("orange") fmt.Println(ms3)
結果
true false false
FindString
MustCompileの中でURIを正規表現で定義し、
FindStringで、そのルールに収まっているか確認をするという使い方もできる。
r2 := regexp.MustCompile("^/(edit|save|view)/([a-zA-Z0-9]+)$") fs := r2.FindString("/view/test") fmt.Println(fs)
結果
/view/test
もしヒットしない場合は、結果を返さない。
FindStringSubmatch
格納されるデータはスライスで入っているので、一つ一つ取り出すことも可能。
fss := r2.FindStringSubmatch("/view/test") fmt.Println(fss[0]) fmt.Println(fss[1]) fmt.Println(fss[2])
結果は以下の通り
/view/test view test