カテゴリ: Go言語 更新日: 2025/10/30

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言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!