本文へスキップ
BecomeCoder

C#文法コース · 第8章 標準ライブラリの必需品 · レッスン57

正規表現(Regex)

ブラウザで完結

導入

「電話番号の形式か」「文字列から数字だけ取り出す」——決まったパターンで文字列を検査・抽出・置換するのが**正規表現(Regex)**です。ルールを覚えると、複雑な文字列処理が数行で書けます。

図解

flowchart LR
    T["対象文字列"] --> R["正規表現パターン<br/>例: \d+ = 数字1個以上"]
    R --> M1["IsMatch → 含むか(真偽)"]
    R --> M2["Match → 最初の一致を取り出す"]
    R --> M3["Replace → 一致部分を置換"]

サンプル

// IsMatch: パターンに合うか(true/false)
Console.WriteLine(Regex.IsMatch("abc123", @"\d+"));               // True(数字を含む)
Console.WriteLine(Regex.IsMatch("090-1234-5678", @"^\d{3}-\d{4}-\d{4}$")); // True(電話番号の形)

// Match: 最初に一致した部分を取り出す
Match m = Regex.Match("価格は1980円です", @"\d+");
Console.WriteLine(m.Value);   // 1980

// Replace: 一致部分を置き換える
Console.WriteLine(Regex.Replace("a1b2c3", @"\d", "*"));   // a*b*c*
  • \dは数字、\d+は「数字1個以上」、^$は行頭・行末、{3}は「ちょうど3個」
  • Regex.IsMatchで判定、Regex.Match(...).Valueで抽出、Regex.Replaceで置換
  • パターンは@"..."(逐語的文字列)で書くと\をそのまま書けて読みやすい

演習

string s = "order-42";

// TODO: s から数字部分だけを取り出して出力してください(42)
___
  • 期待される出力: 42
ヒント1を見る

Regex.Match(s, @"\d+").Valueが一致した文字列です

ヒント2を見る

Console.WriteLine(Regex.Match(s, @"\d+").Value);

まとめ

  • 正規表現は文字列のパターン検査・抽出・置換の道具
  • IsMatch(判定)・Match(抽出)・Replace(置換)が基本
  • \d+^${n}など基本記号を覚えると一気に応用が利く

次回: MathRandomGuidなど定番ユーティリティです。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。