カテゴリ: Go言語 更新日: 2025/12/25

Go言語の正規表現処理入門!regexpパッケージで文字列操作を極める

Go言語の文字列の正規表現処理(regexpパッケージ)を使いこなそう
Go言語の文字列の正規表現処理(regexpパッケージ)を使いこなそう

先生と生徒の会話形式で理解しよう

生徒

「Goで文字列の特定のパターンを見つけたいときはどうすればいいですか?」

先生

「そのときに便利なのがregexpパッケージです。正規表現を使うと、文字列の中から条件に合う部分を簡単に探せます。」

生徒

「正規表現って難しそうですが、初心者でも使えますか?」

先生

「もちろんです。基本を押さえれば、Goでも簡単に使えます。まずは文字列検索から始めましょう。」

1. 正規表現とは?

1. 正規表現とは?
1. 正規表現とは?

正規表現とは、文字列のパターンを表現する方法です。例えば、「数字だけ」「メールアドレスの形式」「特定の単語が含まれる」などを簡単に判定できます。Goではregexpパッケージを使って正規表現を扱います。

2. regexpパッケージで文字列を検索する

2. regexpパッケージで文字列を検索する
2. regexpパッケージで文字列を検索する

Goで文字列の中に特定のパターンが含まれているか確認するには、MatchString関数を使います。例えば、文字列に数字が含まれているかをチェックする場合です。


package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "電話番号は080-1234-5678です"
    matched, _ := regexp.MatchString(`\d{3}-\d{4}-\d{4}`, str)
    fmt.Println(matched)
}

true

この例では、\dは数字を表し、{3}や{4}はその桁数を指定しています。ハイフン付きの電話番号を簡単に判定できました。

3. 正規表現オブジェクトを使う

3. 正規表現オブジェクトを使う
3. 正規表現オブジェクトを使う

頻繁に使う正規表現は、一度コンパイルして再利用すると便利です。regexp.Compileを使うと、正規表現オブジェクトを作成できます。


package main

import (
    "fmt"
    "regexp"
)

func main() {
    re, _ := regexp.Compile(`[a-zA-Z]+`)
    str := "Go言語でRegexpを使う"
    fmt.Println(re.FindString(str))
}

Go

この例では、最初に出現する英字の連続部分「Go」を抽出できました。FindStringは最初のマッチだけを返します。

4. 複数のマッチを抽出する

4. 複数のマッチを抽出する
4. 複数のマッチを抽出する

文字列中に複数のパターンがある場合は、FindAllStringを使います。


package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile(`\d+`)
    str := "商品番号123と456と789"
    numbers := re.FindAllString(str, -1)
    fmt.Println(numbers)
}

[123 456 789]

-1を指定すると全てのマッチを取得できます。数字だけをまとめて抽出できるので、データ処理に便利です。

5. 正規表現で文字列を置換する

5. 正規表現で文字列を置換する
5. 正規表現で文字列を置換する

文字列の置換もregexpで簡単にできます。ReplaceAllStringを使うと、マッチした部分を別の文字列に置き換えられます。


package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile(`\d+`)
    str := "電話番号080-1234-5678"
    newStr := re.ReplaceAllString(str, "XXX")
    fmt.Println(newStr)
}

電話番号XXX-XXXX-XXXX

このように、数字をマスクしたり、特定の文字列をまとめて置換する場合に便利です。

6. 正規表現を使うときのポイント

6. 正規表現を使うときのポイント
6. 正規表現を使うときのポイント
  • 正規表現は強力ですが複雑になりすぎると読みにくくなります。
  • 簡単なパターンから始めて、徐々に複雑な条件に対応するのがコツです。
  • Goではregexp.MustCompileを使うとコンパイルエラー時にプログラムが停止するので、初心者はエラー確認しやすいです。

これらの基本を押さえれば、Go言語で文字列のパターン検索や置換がスムーズに行えます。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Go言語と正規表現処理の振り返り

この記事では、Go言語における正規表現処理の基本から実践的な使い方までを段階的に学びました。 正規表現とは何かという基礎的な考え方から始まり、Go言語で標準的に利用できるregexpパッケージを使って、 文字列検索、文字列抽出、複数マッチの取得、そして文字列置換といった処理を丁寧に確認してきました。 正規表現は、文字列操作やデータ処理、入力チェック、ログ解析など、さまざまな場面で活躍する重要な技術です。

特にGo言語のregexpパッケージは、標準ライブラリとして提供されているため、追加のライブラリを導入することなく、 安定した正規表現処理を実装できる点が大きな特徴です。 MatchStringを使った単純なパターン判定から、CompileやMustCompileによる正規表現オブジェクトの再利用、 FindStringやFindAllStringによるデータ抽出、ReplaceAllStringによる文字列置換まで、 実務でよく使われる機能を一通り理解できたのではないでしょうか。

正規表現は一見すると難しく感じるかもしれませんが、数字の判定や英字の抽出といった身近な例から始めることで、 徐々に理解が深まります。 Go言語での正規表現処理を身につけることで、入力値チェックやデータ整形、ログデータの解析など、 プログラミングの幅が大きく広がります。 基本的な書き方と使いどころを押さえ、必要に応じて少しずつ表現を拡張していくことが大切です。

正規表現処理のサンプルプログラム再確認

ここでは、記事内で学んだ内容をまとめたシンプルなサンプルプログラムをもう一度確認します。 文字列の中から数字を抽出し、特定の形式にマッチするかを確認しつつ、不要な部分を置換する流れを一度に把握できます。


package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "お問い合わせ先は090-1111-2222です。注文番号は123と456です。"

    phoneRe := regexp.MustCompile(`\d{3}-\d{4}-\d{4}`)
    fmt.Println(phoneRe.MatchString(text))

    numberRe := regexp.MustCompile(`\d+`)
    numbers := numberRe.FindAllString(text, -1)
    fmt.Println(numbers)

    masked := phoneRe.ReplaceAllString(text, "XXX-XXXX-XXXX")
    fmt.Println(masked)
}

このように、Go言語のregexpパッケージを使えば、複数の正規表現処理を組み合わせて、 実用的な文字列操作を簡潔に記述できます。 正規表現オブジェクトを使い回すことで、処理の可読性や保守性も向上します。

先生と生徒の振り返り会話

生徒

「最初は正規表現が難しそうだと思っていましたが、Go言語のregexpパッケージを使うと、 意外とシンプルに文字列操作ができることが分かりました。」

先生

「そうですね。Go言語では標準ライブラリが充実しているので、 正規表現も特別な準備をせずにすぐ使えるのが強みです。」

生徒

「MatchStringで判定したり、FindAllStringでデータをまとめて取得したりできるのが便利だと感じました。 電話番号や数字の抽出は実務でも使えそうです。」

先生

「その通りです。入力チェックやデータ加工、ログ解析など、 正規表現が活躍する場面はたくさんあります。 まずは今回学んだ基本的なパターンをしっかり使いこなせるようにしましょう。」

生徒

「これからは、正規表現を使ってGo言語での文字列処理に自信を持って取り組めそうです。」

先生

「それが一番大切です。少しずつ経験を積みながら、 正規表現とGo言語の組み合わせを自分の武器にしていきましょう。」

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説