0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】使える正規表現の一覧と意味まとめ

Posted at

はじめに

正規表現(RegExp)は、文字列のパターンを扱うための強力な手段です。
Rubyでも /pattern/ の形式で書くことでRegExpオブジェクトが生成され、文字列検索・抽出・置換などに活用されます。

ここでは、よく使う正規表現の構文を一覧で紹介します。

基本構文一覧

正規表現 意味・説明
. 任意の1文字(改行を除く)
* 直前の文字の0回以上の繰り返し
+ 直前の文字の1回以上の繰り返し
? 直前の文字の0回または1回
| OR(A または B)
() グループ化(キャプチャ)
[] 任意の1文字を指定(文字クラス)例: [abc] は a か b か c
[^] 否定の文字クラス 例: [^abc] は a, b, c 以外
{n} 直前の文字のn回の繰り返し
{n,} n回以上の繰り返し
{n,m} n回以上m回以下の繰り返し

アンカー(位置指定)

正規表現 意味
^ 行の先頭
$ 行の末尾

特殊文字(エスケープ付き)

正規表現 意味
\d 数字(0〜9)
\D 数字以外
\w 単語文字(英数字とアンダースコア)
\W 単語文字以外
\s 空白(スペース、タブ、改行など)
\S 空白以外
\t タブスペース

Rubyでの使い方例

=~ を使ったマッチ位置の確認

マッチした場合は位置(インデックス)が返り、マッチしないと nil。

"abc123" =~ /\d+/        # => 3(3文字目に数字が登場)
"abc" =~ /\d+/           # => nil(マッチなし)

String#[]を使ったマッチ部分の抽出

"2025-06-08"[/\d{4}/]     # => "2025"(4桁の数字にマッチ)
"hello123"[/\d+/]         # => "123"

sub/gsubを使った置換

  • sub: 最初にマッチした部分だけ置換
  • gsub: マッチしたすべての部分を置換
"hello123".sub(/\d+/, "")   # => "hello"(最初の数字だけ除去)
"hello123world456".gsub(/\d+/, "-") # => "hello-world-"

scanで複数のマッチを配列で取得

  • scan: 文字列の中から パターンに一致する部分をすべて探して、配列として返すメソッドです。
"abc123def456".scan(/\d+/)   # => ["123", "456"]
"2024/12/31 2025/01/01".scan(/(\d{4})\/(\d{2})\/(\d{2})/)
# => [["2024", "12", "31"], ["2025", "01", "01"]]

まとめ

正規表現は、文字列の中から特定のパターンを見つけたり、置き換えたりする強力なツールですが、少し慣れが必要です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?