C# - 正規表現: 初心者のガイド

こんにちは、未来のプログラミングスーパースター!? 正規表現(RegEx)の世界に飛び込む興奮的な旅に ready ですか?コードを書いたことがない人も心配しないでください - この冒険をステップバイステップで案内します。さあ、潜りましょう!

C# - Regular Expressions

正規表現とは?

本題に入る前に、まず正規表現とは何かを理解しましょう。 imagine して、テキストの海の中で特定のパターンを見つける探偵?️‍♀️としてください。正規表現はあなたの拡大鏡で、パターンに基づいてテキストを検索、一致、操作する手助けをしてくれます。クールですね?

正規表現を定義するための構造

それでは、これらの強力なパターンを作成するために使用する基本的なブロックを見てみましょう。これらは私たちのRegEx世界のLEGOピースだと思ってください!

構造 説明
. 改行を除く任意の单一文字を一致 a.cは"abc"、"a1c"、"a@c"などに一致
* 前の文字の0回以上の一致 ab*cは"ac"、"abc"、"abbc"、"abbbc"などに一致
+ 前の文字の1回以上の一致 ab+cは"abc"、"abbc"、"abbbc"に一致 but not "ac"
? 前の文字をオプションに colou?rは"color"と"colour"の両方に一致
^ 行の始まりに一致 ^Helloは"Hello World"に一致 but not "Say Hello"
$ 行の終わりに一致 World$は"Hello World"に一致 but not "World Cup"
[ ] セット内の任意の单一文字に一致 [aeiou]は任意の母音に一致
[^ ] セット内にない任意の单一文字に一致 [^aeiou]は任意の子音に一致
( ) 文字をグループ化 (ab)+は"ab"、"abab"、"ababab"などに一致

これが混乱すると思ったら、心配しないでください - すぐにこれらを実行で見てみましょう!

Regex クラス

C#では、Regexクラスを使って正規表現を扱います。これはパターンマッチのために使えるスイスアーミーナイフ?のようなものです。使い方を見てみましょう!

例1: 単純なパターンの検索

まずは簡単なものから始めましょう。想象して、メールアドレスが有効かどうかをチェックするプログラムを構築しています。

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string email = "[email protected]";
string pattern = @"@.*\.";

Regex regex = new Regex(pattern);
Match match = regex.Match(email);

if (match.Success)
{
Console.WriteLine("Valid email address!");
}
else
{
Console.WriteLine("Invalid email address!");
}
}
}

この例では:

  • Regexオブジェクトをパターン@"@.*\."で作成します。
  • このパターンは@記号の後ろに任意の文字(.*)が来て、それにドット(\。)が続くものを探します。
  • Matchメソッドを使ってメール文字列内でこのパターンを検索します。
  • 成功すれば、メールを有効と見なします。

実際のメールバリデーションはもっと複雑です!

例2: テキストの置換

さて、チャットアプリを構築して、"LOL"のすべてのインスタンスを"laugh out loud"に置換したいとします。RegExが助け舟を出します!

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string input = "OMG! Did you see that? LOL! I can't believe it. LOL";
string pattern = @"\bLOL\b";
string replacement = "laugh out loud";

string result = Regex.Replace(input, pattern, replacement);

Console.WriteLine(result);
}
}

ここで起こっていることは:

  • \bを使って単語の境界を一致させます。これにより、"LOL"が単語として完全に一致する場合にのみ置換されます。
  • Regex.Replaceはすべての一致を検出して置換します。

出力: "OMG! Did you see that? laugh out loud! I can't believe it. laugh out loud"

例3: 情報の抽出

最後に、ツイートからすべてのハッシュタグを抽出しましょう。ソーシャルメディアアプリのトレンディなトピック機能を構築する場合に役立ちます。

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string tweet = "Just finished my #CSharp course! #Coding #LearningToCode";
string pattern = @"#\w+";

MatchCollection matches = Regex.Matches(tweet, pattern);

Console.WriteLine("Hashtags found:");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}

これを分解すると:

  • パターン#\w+は#記号の後ろに1つ以上の単語文字があるものを探します。
  • Regex.Matchesは文字列内のパターンのすべての一致を検出します。
  • 検出された一致をループで回って表示します。

出力:

Hashtags found:
#CSharp
#Coding
#LearningToCode

締め括り

おめでとうございます!? C#の正規表現の世界への最初の一歩を踏み出しました。基本的なパターンマッチからテキストの置換、情報の抽出までをカバーしました。正規表現は強力なツールですが、スーパーパワーのように、熟練するには練習が必要です。

最初は難しいと感じるかもしれませんが、私が最初に正規表現を教えたとき、生徒の一人が「猫がキーボードを歩いたように見える」と言っていました!しかし、練習を重ねることで、彼は正規表現の魔法使いになりました。あなたもできる!

実験を続け、さまざまなパターンを試してみてください。そして、プロのように针をわらの中から見つけることができるようになります。ハッピーコーディング!??

Credits: Image by storyset