Go言語のFindStringの使い方を完全解説!正規表現で文字列を検索・抽出する方法
生徒
「Go言語で、文字列の中から特定の部分だけ取り出すことってできますか?」
先生
「できますよ。Go言語では正規表現という仕組みを使って、文字列を検索したり抽出したりできます。」
生徒
「正規表現って難しそうですが、簡単に使えますか?」
先生
「基本だけ覚えれば大丈夫です。今回はFindStringという便利な方法を使って、簡単に文字列を取り出す方法を見ていきましょう。」
1. FindStringとは何か
Go言語のFindStringは、正規表現を使って文字列の中から条件に合う部分を見つけて、その最初の一致した文字列を取り出すための機能です。
正規表現とは、文字のパターンを指定して検索するための仕組みです。例えば数字だけ、英語だけ、特定の単語などを見つけることができます。
FindStringは、その中でも最初に見つかった一致部分だけを返すという特徴があります。
2. 基本的な使い方
まずは基本的な使い方を見てみましょう。Go言語ではregexpパッケージを使います。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("Go")
result := re.FindString("I love Go language")
fmt.Println(result)
}
実行結果
Go
この例では、文字列の中からGoという単語を探して、最初に見つかったGoを取り出しています。
3. 数字を抽出する方法
正規表現を使うと、数字だけを取り出すこともできます。数字は0から9までを表すパターンで指定します。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
result := re.FindString("商品番号は12345です")
fmt.Println(result)
}
実行結果
12345
ここで使っているプラス記号は、1文字以上の繰り返しという意味です。つまり連続した数字をまとめて取得しています。
4. 英語だけを抽出する方法
アルファベットだけを取り出したい場合も簡単です。英字の範囲を指定します。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-zA-Z]+")
result := re.FindString("123abc456")
fmt.Println(result)
}
実行結果
abc
このように、文字の種類を指定することで柔軟に検索できます。
5. 一致しない場合の動作
FindStringは条件に一致する文字列が見つからない場合、空の文字列を返します。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("XYZ")
result := re.FindString("Hello World")
fmt.Println(result)
}
実行結果
何も表示されていないように見えますが、これは空文字が返されている状態です。
6. よく使う正規表現パターン
初心者がよく使うパターンをいくつか紹介します。
- [0-9] 数字1文字
- [a-z] 小文字英字
- [A-Z] 大文字英字
- . 任意の1文字
- + 1回以上繰り返し
これらを組み合わせることで、複雑な検索もできるようになります。
7. FindStringとMatchStringの違い
FindStringとよく似た機能にMatchStringがあります。
MatchStringは一致するかどうかを真偽値で返しますが、FindStringは一致した文字列そのものを返します。
つまり、MatchStringは確認用、FindStringは抽出用と考えると分かりやすいです。
8. 初心者向けの考え方とコツ
正規表現は最初は難しく感じますが、文字の並び方のルールを決めるものと考えると理解しやすくなります。
例えば、電話番号を探す場合は数字が並んでいるというルールを作ります。メールアドレスなら英字と記号の組み合わせというルールになります。
FindStringはそのルールに合った最初の部分だけを見つけてくれる便利な道具です。
まずは簡単なパターンから試して、少しずつ慣れていくことが大切です。
まとめ
Go言語のFindStringは、正規表現を使って文字列の中から条件に一致する最初の部分を取り出すための非常に便利な機能です。今回の記事では、Go言語の正規表現の基本からFindStringの使い方、数字の抽出、英字の抽出、一致しない場合の挙動、さらにMatchStringとの違いまで幅広く解説しました。:contentReference[oaicite:0]{index=0}
特に重要なのは、FindStringは最初に一致した部分のみを返すという特徴です。この性質を理解することで、ログ解析、データ抽出、テキスト処理などさまざまな場面で効率よく処理ができるようになります。Go言語での文字列検索やテキストデータ処理を行う際には、regexpパッケージとFindStringの組み合わせは必須の知識といえます。
また、正規表現の基本パターンである数字の範囲指定や英字の指定、繰り返しの指定などを理解することで、柔軟な検索条件を作ることが可能になります。例えば、商品番号の抽出、ユーザー入力の検証、ログファイルからの情報取得など、実務でもよく使われる場面が多く存在します。
初心者の方はまず、単純なキーワード検索から始めて、徐々に正規表現のパターンを組み合わせていくのがおすすめです。FindStringを使いこなせるようになることで、Go言語でのテキスト処理の理解が一気に深まり、実践的なプログラミングスキルが身につきます。
サンプルプログラムの復習
package main
import (
"fmt"
"regexp"
)
func main() {
text := "注文番号はA12345です"
re := regexp.MustCompile("[0-9]+")
result := re.FindString(text)
fmt.Println("抽出結果:", result)
}
実行結果
抽出結果: 12345
このように、FindStringを使うことで複雑な文字列の中から必要な情報だけを簡単に取り出すことができます。Go言語の正規表現とFindStringは、データ処理や自動化処理において非常に重要な役割を果たします。
生徒
「Go言語のFindStringって、文字列の中から必要な部分だけ取り出せるんですね。とても便利だと思いました。」
先生
「その通りです。特に正規表現と組み合わせることで、数字や英字など特定のパターンに一致するデータを簡単に抽出できます。」
生徒
「MatchStringとの違いも理解できました。MatchStringは一致するか確認するだけで、FindStringは実際に文字列を取り出すんですね。」
先生
「そうです。用途に応じて使い分けることが重要です。データを取得したい場合はFindString、条件判定だけならMatchStringを使うとよいでしょう。」
生徒
「正規表現は難しいイメージがありましたが、パターンを覚えれば使えそうです。」
先生
「最初は簡単なパターンから始めて、少しずつ複雑な条件に挑戦していくのがコツです。Go言語のFindStringを使いこなせれば、テキスト処理の幅が大きく広がりますよ。」
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!