カテゴリ: Ruby 更新日: 2025/12/16

Rubyの正規表現を完全ガイド!初心者でもわかるスラッシュ記法と%r記法・後方参照・$1の使い方

正規表現 /.../ と %r{}:メタ文字・後方参照・$1〜 の活用法
正規表現 /.../ と %r{}:メタ文字・後方参照・$1〜 の活用法

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

生徒

「Rubyのコードで/.../っていう記号を見たんですが、これは何ですか?」

先生

「それは正規表現(せいきひょうげん)といって、文字のパターンを表す特別な書き方です。例えば、電話番号やメールアドレスを探したり、特定の文字列を取り出すときに使えます。」

生徒

「便利そうですね!でも書き方が難しそう……。」

先生

「安心してください。今日はRubyの正規表現の基本と、スラッシュ記法や%r記法、後方参照や$1などの使い方を、初心者でも分かるようにゆっくり説明していきます。」

1. 正規表現とは?

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

正規表現とは、文字列の中から特定のパターンを探したり、一致している部分を取り出したりするためのルールの書き方です。例えば、「電話番号は数字が3桁、ハイフン、数字が4桁…」といった決まりを文字のパターンとして表現できます。

Rubyでは、正規表現を作る方法として主に2つあります。

  • /パターン/(スラッシュで囲む方法)
  • %r{パターン}{}で囲む方法)

どちらも同じ意味ですが、用途によって使い分けます。

2. /.../ と %r{} の違い

2. /.../ と %r{} の違い
2. /.../ と %r{} の違い

最も基本的な書き方は、スラッシュで囲む方法です。


text = "今日は2025年9月14日です"
if text =~ /2025/
  puts "2025年が見つかりました"
end

2025年が見つかりました

一方、%r{}は中にスラッシュを含む場合に便利です。


url = "https://example.com/test"
if url =~ %r{https://}
  puts "URLがhttpsで始まっています"
end

URLがhttpsで始まっています

このように、/.../%r{...}はどちらも正規表現を表しますが、スラッシュを多く使う場面では%rを使うと読みやすくなります。

3. 正規表現のメタ文字

3. 正規表現のメタ文字
3. 正規表現のメタ文字

正規表現には「メタ文字」と呼ばれる特別な記号があります。これを使うことで柔軟な検索が可能になります。

  • .:任意の1文字
  • *:0回以上の繰り返し
  • +:1回以上の繰り返し
  • ?:0回または1回
  • []:文字の集合(例:[0-9]は数字)
  • ^:行の先頭
  • $:行の末尾

text = "abc123"
if text =~ /[0-9]+/
  puts "数字が含まれています"
end

数字が含まれています

このように、メタ文字を組み合わせることで複雑な条件にマッチさせることができます。

4. 後方参照と $1〜 の活用

4. 後方参照と $1〜 の活用
4. 後方参照と $1〜 の活用

正規表現では、かっこ () で囲んだ部分を「キャプチャ」と呼び、あとから参照できます。これを後方参照といいます。


text = "電話番号は03-1234-5678です"
if text =~ /(\d{2})-(\d{4})-(\d{4})/
  puts "市外局番: #{$1}"
  puts "市内局番: #{$2}"
  puts "加入者番号: #{$3}"
end

市外局番: 03
市内局番: 1234
加入者番号: 5678

$1には最初のかっこの中身、$2には2番目、$3には3番目…というように順番に格納されます。これを使えば、文字列の一部を簡単に取り出せます。

5. 後方参照を使った置換

5. 後方参照を使った置換
5. 後方参照を使った置換

後方参照は検索だけでなく、文字列の置換にも使えます。Rubyのgsubメソッドを使うと、マッチした部分を新しい文字列に置き換えることができます。


text = "名前: 山田太郎"
new_text = text.gsub(/名前: (.+)/, '氏名: \1')
puts new_text

氏名: 山田太郎

このように、\1で1つ目のキャプチャを参照し、置換後の文字列に活用できます。

6. 正規表現の実用例

6. 正規表現の実用例
6. 正規表現の実用例

最後に、正規表現を使った実用的な例を紹介します。


emails = ["user@example.com", "test@abc", "hello@example.org"]

emails.each do |email|
  if email =~ /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
    puts "#{email} は有効なメールアドレスです"
  else
    puts "#{email} は無効なメールアドレスです"
  end
end

user@example.com は有効なメールアドレスです
test@abc は無効なメールアドレスです
hello@example.org は有効なメールアドレスです

このように、正規表現は入力チェックやデータ処理で非常に役立ちます。Rubyではスラッシュ記法と%r記法を自由に使い分けられるので、場面に応じて活用していきましょう。

まとめ

まとめ
まとめ

ここまで、Rubyの正規表現を基礎から応用までじっくり見てきました。正規表現は最初は少しとっつきにくく感じるかもしれませんが、慣れてしまうと文字列を扱うあらゆる場面で強力な武器になります。とくに、/.../ のスラッシュ記法%r{} 記法の使い分け、さらに後方参照の $1・$2・$3 の扱い方は、Rubyでデータ処理をするうえで欠かせない知識です。

また、メタ文字を組み合わせることで柔軟なパターン検索が可能になり、メールアドレスのチェック、電話番号の抽出、特定の文章から重要な部分だけを取り出すなど、日常的なプログラミングの中でさまざまな用途があります。文章の検索や抽出だけでなく、キャプチャした内容を使って置換する gsub なども学ぶことで、実践的な文字列処理がぐっと楽になります。

正規表現は最初の壁こそ高く見えますが、「よく使う書き方」から順に覚えていけば、自然と身についていきます。Rubyでは直感的な書き方ができるので、実際に動かしながら学ぶことで理解がさらに深まります。

■ 正規表現のまとめポイント

  • 文字列のパターンを表す特別なルール
  • /.../ は最も基本的で読みやすい書き方
  • %r{...} はスラッシュを含む正規表現に便利
  • () で囲んだ部分はキャプチャとして後から参照できる
  • $1・$2・$3 はキャプチャした内容を取り出すために使用
  • gsub でキャプチャした内容を使い置換も可能

■ まとめとしてもう一度サンプルコード


text = "商品コード:ABC-1234"
if text =~ /([A-Z]+)-(\d+)/
  puts "英字コード → #{$1}"
  puts "番号コード → #{$2}"
end

英字コード → ABC
番号コード → 1234

このように、実際の処理の中で後方参照を活用すると、文字列の構造を理解しながら必要な部分だけを取り出せるようになります。実務の場面でも非常によく使われるテクニックなので、ぜひこの機会に繰り返し触れて、確実に身につけていきましょう。

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

生徒

「先生、正規表現って最初は難しそうで不安でしたけど、実際に動かしてみると意外と仕組みが分かってきました!」

先生

「その調子です。正規表現は使えば使うほど慣れていきますよ。今回学んだスラッシュ記法や%r記法、それに後方参照の使い方はとても大切なので、たくさん試してみるとさらに理解が深まりますよ。」

生徒

「後方参照で電話番号を分解できたのが特に面白かったです! gsub で置換できるのも便利ですね。」

先生

「そうですね。実務やアプリ開発でも入力チェックやデータ処理で欠かせないテクニックです。まずは今日学んだ内容を何度か手を動かしながら繰り返してみましょう。きっと自然に使いこなせるようになりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Rubyで正規表現とは何をするための機能ですか?

Rubyの正規表現は、文字列の中から特定のパターンを検索したり、一致する部分を取り出したりするために使います。電話番号やメールアドレスの判定など、文字列のチェックに便利です。
関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう
No.8
Java&Spring記事人気No8
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説