Go言語での正規表現

はじめに

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