Lapis Lazuli

technical blog for web developer

【Go】正規表現の使い方

今回はGoの正規表現の扱いについてです。
Goにも他の言語と同様、正規表現を扱うパッケージのregexpというものが標準で組み込まれています。

import "regexp"

これで準備完了です。

文字列のマッチングを行う

正規表現を使うシーンで一番多いのがこれだと思います。
使い方は以下のように。

regexp,MustCompile(`^0[789]0-\d{4}-\d{4}$`)

引数に正規表現を入れてあげると解析・コンパイルされます。ちなみにMustCompileに失敗するとpanicを起こす仕組みになってます。
これを使って更に文字列の比較を行ってみましょう。

r := regexp,MustCompile(`^0[789]0-\d{4}-\d{4}$`)
r.MatchString(`090`) // true

MatchStringの中に比較対象の文字列を入れるだけです。マッチすればtrueを返す仕組み。

バッククオテーションを使う理由

上記で引数を渡すとき、ダブルクオーテーションじゃなくてバッククオテーションを使っているのに気がついた方もいると思います。
Goの文字列はダブルクオーテーションを使いますよね?
でも、これはちゃんと理由があって、バッククオテーションだと特殊文字を一切解釈しなくなります。
ダブルクオーテーションを使うことも出来るのですが、その場合はエスケープすることが必須になります。

まとめ

Goの正規表現PHPなどに比べるとワンクッション多いなー。っていうのが第一印象です。
PHPならpreg_matchで一発ですしね。
まぁこれも慣れの問題かなと・・・書いているうちに気にならなくなりたい。