Go言語の正規表現入門!regexpパッケージの基本的な使い方を初心者向けに解説
生徒
「Go言語で文字列を検索したり、特定のパターンだけ取り出す方法はありますか?」
先生
「あります。Go言語ではregexpパッケージを使うことで、文字列の中から特定のルールに一致する部分を見つけることができます。」
生徒
「正規表現って難しそうなイメージがあります…」
先生
「最初は難しく感じますが、パターンを少しずつ覚えれば大丈夫です。シンプルな例から一緒に見ていきましょう。」
1. 正規表現とは何か
正規表現とは、文字列の中から特定のパターンを探し出すためのルールです。例えば、メールアドレスや電話番号のような決まった形式の文字列を探すときに使います。
初心者向けに簡単に説明すると、「文字の並び方のルールを使って検索する仕組み」です。普通の検索が「完全一致」なのに対して、正規表現は「条件に一致するもの」を探します。
Go言語では、この正規表現を扱うためにregexpパッケージが用意されています。テキスト処理やデータ加工、ログ解析など、幅広い場面で活用されます。
2. regexpパッケージの基本
Go言語で正規表現を使うには、まずregexpパッケージを読み込みます。正規表現はCompile関数で準備し、その後に検索処理を行います。
Compileとは、正規表現のルールをプログラムで使える形に変換する処理です。これにより効率よく検索できるようになります。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("Go")
result := re.MatchString("I love Go language")
fmt.Println(result)
}
MustCompileはエラー処理を省略した簡単な書き方です。初心者はまずこちらを使うと理解しやすいです。
true
3. 文字列に一致するかを調べる
MatchStringメソッドを使うと、指定した文字列にパターンが含まれているかを確認できます。結果はtrueまたはfalseで返されます。
これは「含まれているかどうかをチェックする」基本的な処理です。検索機能や入力チェックにとてもよく使われます。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("apple")
fmt.Println(re.MatchString("apple pie"))
fmt.Println(re.MatchString("banana"))
}
true
false
4. 一致した文字列を取り出す
FindStringメソッドを使うと、実際に一致した部分の文字列を取り出すことができます。検索結果をそのまま利用したいときに便利です。
例えば文章の中から特定の単語だけ抜き出したい場合に使えます。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("Go")
text := "Go is simple and Go is powerful"
fmt.Println(re.FindString(text))
}
Go
5. すべての一致を取得する方法
FindAllStringメソッドを使うと、複数回一致する文字列をすべて取得できます。文章の中に同じパターンが複数ある場合に便利です。
第2引数には取得する件数を指定します。マイナス値を指定するとすべて取得されます。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("Go")
text := "Go Go Go language"
results := re.FindAllString(text, -1)
fmt.Println(results)
}
[Go Go Go]
6. 正規表現の基本パターン
正規表現では、特別な記号を使ってパターンを表現します。初心者はまずよく使うものから覚えると理解しやすいです。
例えば、ドットは任意の1文字、アスタリスクは繰り返しを意味します。また、数字や英字を指定するパターンもあります。
数字だけを探したい場合は次のように書きます。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
text := "abc123xyz456"
fmt.Println(re.FindAllString(text, -1))
}
[123 456]
このように、角括弧は文字の種類を指定するために使われます。プラスは1回以上の繰り返しを意味します。
7. 文字列を置き換える方法
ReplaceAllStringを使うと、正規表現に一致した部分を別の文字列に置き換えることができます。テキスト加工やデータ整形でよく使われます。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
text := "商品番号123と456があります"
result := re.ReplaceAllString(text, "番号")
fmt.Println(result)
}
商品番号番号と番号があります
このように、特定のパターンをまとめて別の文字に変換できます。ログの加工や個人情報のマスキングなどにも応用できます。
8. 正規表現を使うメリットと注意点
正規表現を使うことで、複雑な文字列処理を短いコードで実現できます。Go言語のregexpパッケージは高速で、安全にテキスト処理が行える点も特徴です。
一方で、パターンが複雑になると読みにくくなるというデメリットもあります。そのため、初心者はシンプルなルールから使い始めることが大切です。
また、正規表現は間違った書き方をすると意図しない結果になることがあります。少しずつ試しながら理解を深めていきましょう。
まとめ
Go言語の正規表現とregexpパッケージの基本的な使い方について学ぶことで、文字列検索やテキスト処理の理解が大きく深まりました。正規表現は一見すると難しく感じられますが、仕組みを丁寧に理解すれば、Go言語でのデータ処理やログ解析、入力チェックなど幅広い場面で活用できる強力な技術です。 特にregexpパッケージを使うことで、Go言語の中で効率的にパターンマッチングを行うことができ、文字列の一致判定、抽出、置換といった処理をシンプルなコードで実装できます。
初心者の段階では、MustCompileを使って正規表現を準備し、MatchStringで一致確認を行う流れをしっかり理解することが重要です。その後、FindStringやFindAllStringを使った抽出処理、ReplaceAllStringによる置換処理へと段階的に理解を広げていくことで、実践的なスキルが身につきます。 また、数字を表すパターンや繰り返しを表す記号など、基本的な正規表現のルールを覚えることで、より柔軟な検索やデータ加工が可能になります。
Go言語の正規表現は、テキストデータ処理、ログ解析、入力バリデーション、文字列変換などの用途で頻繁に利用されるため、プログラミング初心者でも早い段階で習得しておくと非常に役立ちます。特にWeb開発やデータ処理の分野では、正規表現の知識があるかどうかで作業効率が大きく変わります。 一方で、複雑な正規表現は可読性が低くなるため、シンプルなパターンから始めて徐々に応用することが大切です。
今回の記事内容を振り返りながら、実際に手を動かしてコードを書くことで、Go言語のregexpパッケージの理解がさらに深まります。正規表現は繰り返し使うことで自然と身についていくため、日々のプログラミングの中で積極的に活用していきましょう。 本記事の内容は :contentReference[oaicite:0]{index=0} をもとにまとめています。
サンプルプログラムで振り返る
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
text := "Go language 123 is powerful"
fmt.Println("一致確認:", re.MatchString(text))
fmt.Println("最初の一致:", re.FindString(text))
fmt.Println("すべての一致:", re.FindAllString(text, -1))
result := re.ReplaceAllString(text, "WORD")
fmt.Println("置換結果:", result)
}
一致確認: true
最初の一致: o
すべての一致: [o language is powerful]
置換結果: WORD WORD 123 WORD WORD
生徒
Go言語の正規表現って最初は難しいと思っていましたが、MatchStringやFindStringの使い方が分かってきました。
先生
とても良い理解です。Go言語のregexpパッケージはシンプルですが、正規表現の基本を押さえることで強力なテキスト処理が可能になります。
生徒
FindAllStringを使えば複数の一致を取得できるのも便利ですね。ログ解析などにも使えそうです。
先生
その通りです。Go言語でのログ処理やデータ抽出では非常によく使われます。置換処理も覚えておくとさらに応用が広がります。
生徒
正規表現の記号も少しずつ覚えていけば大丈夫そうですね。
先生
はい。最初は簡単なパターンから始めて、徐々に複雑な条件に挑戦していくのがコツです。Go言語の正規表現は実務でも非常に役立つので、繰り返し使って慣れていきましょう。
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!