PR

【C#】文字列操作の基本!正規表現を理解しよう!

【C#】
広告

はじめに

正規表現(Regex)は、文字列操作のための強力なツールです。パターンマッチング、検索、置換など、複雑な文字列操作を簡潔に記述することができます。C#には、正規表現を扱うための豊富な機能が用意されています。この記事では、C#における正規表現の基本から応用までを詳しく解説し、実際のコード例を通じてその使い方を学びます。

正規表現の基本

正規表現とは?

正規表現は、特定の文字列パターンを表現するための特殊な文字列です。これを使用することで、文字列内の特定のパターンを検索、抽出、置換することができます。

正規表現の構文

正規表現には多くの特殊文字と構成があります。以下は、その一部です:

  • . : 任意の一文字に一致
  • ^ : 文字列の開始に一致
  • $ : 文字列の終了に一致
  • * : 直前の文字が0回以上繰り返される
  • + : 直前の文字が1回以上繰り返される
  • ? : 直前の文字が0回または1回現れる
  • [] : 文字クラス。中のいずれかの文字に一致
  • | : OR演算子。どちらかのパターンに一致
  • \ : エスケープ文字。特殊文字をエスケープするために使用

基本的な例

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string pattern = @"\d+"; // 一つ以上の数字に一致
        string input = "There are 123 apples and 456 oranges.";

        MatchCollection matches = Regex.Matches(input, pattern);
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value); // 出力: 123, 456
        }
    }
}

この例では、文字列中の数字をすべて検索して出力しています。

正規表現を使用した文字列操作

検索とマッチング

正規表現を使用して、文字列内の特定のパターンを検索することができます。

string input = "The quick brown fox jumps over the lazy dog.";
string pattern = @"\b\w{4}\b"; // ちょうど4文字の単語に一致

MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value); // 出力: "quick", "over", "lazy"
}

置換

正規表現を使用して、文字列中の特定のパターンを置換することもできます。

string input = "The quick brown fox jumps over the lazy dog.";
string pattern = @"\bfox\b";
string replacement = "cat";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result); // 出力: The quick brown cat jumps over the lazy dog.

分割

正規表現を使用して、文字列を特定のパターンで分割することができます。

string input = "one,two;three four";
string pattern = @"[,; ]"; // カンマ、セミコロン、スペースで分割

string[] result = Regex.Split(input, pattern);
foreach (string s in result)
{
    Console.WriteLine(s); // 出力: "one", "two", "three", "four"
}

正規表現の応用

電子メールアドレスの検証

正規表現を使用して、電子メールアドレスの形式を検証する例です。

string email = "example@example.com";
string pattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";

if (Regex.IsMatch(email, pattern))
{
    Console.WriteLine("Valid email address.");
}
else
{
    Console.WriteLine("Invalid email address.");
}

URLの抽出

文字列中からURLを抽出する例です。

string text = "Visit our site at https://example.com or http://example.org.";
string pattern = @"https?://\S+";

MatchCollection matches = Regex.Matches(text, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value); // 出力: https://example.com, http://example.org
}

電話番号のフォーマット

正規表現を使用して、電話番号の形式を整える例です。

string phone = "123-456-7890";
string pattern = @"(\d{3})-(\d{3})-(\d{4})";
string replacement = "($1) $2-$3";
string result = Regex.Replace(phone, pattern, replacement);
Console.WriteLine(result); // 出力: (123) 456-7890

パフォーマンスとベストプラクティス

パフォーマンスの考慮

正規表現は強力ですが、複雑なパターンを多用するとパフォーマンスに影響を与えることがあります。特に大量のデータを処理する場合は、効率的なパターンを設計することが重要です。

ベストプラクティス

  1. 簡潔なパターンを使用する:必要以上に複雑な正規表現は避け、シンプルなパターンを心がける。
  2. エスケープシーケンスに注意する:特殊文字は適切にエスケープする。
  3. 正規表現のテスト:ツールを使用して正規表現の動作をテストし、期待通りの結果を得られるか確認する。

まとめ

C#における正規表現は、文字列操作を強力かつ効率的に行うための重要なツールです。正規表現を使用することで、パターンマッチング、検索、置換、分割など、複雑な文字列操作を簡単に実現できます。この記事で紹介した基本的な構文と応用例を参考にして、正規表現を効果的に活用し、C#プログラミングのスキルを向上させてください。

広告
【C#】
広告
タイトルとURLをコピーしました