くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

C#で{}で囲まれた文字列を 正規表現で取得する

C# 固有の何かがあるわけではないですが、タイトルに C# とつけてみました。

最近作ってウェブサイトで {} に囲まれた文字列を抜き出す処理が必要だったのでコードを書きました。しかし、 ググっても、あまり似た情報がないのでブログに書いてみました。

前提知識

C# で、 正規表現を使うためには、 Regex クラスを使います。

サンプルコード

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            var Text = "The quick brown {fox} jumps over the lazy {dog}";
            var Matches = new Regex(@"\{(.+?)\}").Matches(Text);
            for (int i = 0; i < Matches.Count; i++)
            {
                var AnimalName = Matches[i].Value;
                Console.WriteLine($"{i}:{AnimalName}");
            }
        }
    }
}

実行結果

https://lh3.googleusercontent.com/-PfVJL5MKjqM/WWS49uoEegI/AAAAAAAAK3Y/5FLOHdiSTMgEbHXLCm43uEOdqoqKxSGrgCHMYCw/s0/cmd_2017-07-11_20-39-33.png

正規表現の解説

正規表現的な部分はここかな

{(.+?)}

\{ \} でエスケープ処理

正規表現では、 {} は意味を持つ字句です。 具体的には、 *m{n} などと書くことにより mがn回繰り返すなどの意味があります。 そこで、 \ をつけることでエスケープしています。