C#で正規表現を使って文字列を抽出する

C#で正規表現を使って文字列を検索して抽出します。正規表現そのものについては、MSDNの.NET Framework の正規表現を参考にしてください。

目次

  1. 名前空間
  2. パターンに最初に一致する文字列を返すRegex.Match() メソッド
    1. 書式
    2. 試してみた
  3. パターンに位置する全ての文字列を返すRegex.Matches()メソッド
    1. 書式
    2. 試してみた

名前空間

正規表現を使う場合は、名前空間をusingブロックに追加しておいた方が、逐一指定しなくてすむので楽です。

using System.Text.RegularExpressions;

パターンに最初に一致する文字列を返すRegex.Match() メソッド

検索結果が一つだけでよい場合は、Regex.Match()メソッドを使います。Regex.Match()メソッドでは、検索対象文字列の中で最初にパターンに一致した文字列部分が抽出されます。使い方をメモっておきます。

書式

Regex.Match(string input, string pattern, RegexOptions options)

引数

内容

第1引数

検索対象となる文字列。

第2引数

検索パターン。ここで指定するパターンに一致する最初の文字列が返される。

第3引数

検索モード。RegexOptions列挙体で指定する。(省略可)

戻り値は、System.Text.RegularExpressions.Matchクラスのインスタンスです。このインスタンスのValueプロパティに、検索結果が格納されています。

試してみた

こんなコードで試してみました。標準出力に抽出した文字列を表示するコンソールアプリです。

using System;
using System.Text.RegularExpressions;

namespace regex_trial3
{
    class Program
    {
        static void Main(string[] args)
        {
            string kotoba = @"かえるぴょこぴょこみぴょこぴょこあわせてぴょこぴょこむぴょこぴょこ";
            Match matchedObject = Regex.Match(kotoba,@".ぴょこぴょこ");
            Console.WriteLine(matchedObject.Value);
        }
    }
}

検索パターン.ぴょこぴょこのうち、最初のピリオドは任意の1文字を表します。MatchクラスのインスタンスにRegex.Match()の結果を入れて、そのインスタンスのValueプロパティの値をコンソールに出力するわけです。 出力は下記のようになります。

るぴょこぴょこ

パターンに一致する文字列としては「るぴょこぴょこ」「みぴょこぴょこ」「てぴょこぴょこ」「むぴょこぴょこ」の4つがありますが、最初の文字列「るぴょこぴょこ」が返ってきます。

パターンに位置する全ての文字列を返すRegex.Matches()メソッド

パターンに一致する全ての文字列が必要な場合は、Regex.Matches()メソッドを使います。

書式

Regex.Matches(string input, string pattern, RegexOptions options)

引数

内容

第1引数

検索対象となる文字列。

第2引数

検索パターン。ここで指定するパターンに一致する文字列が返される。

第3引数

検索モード。RegexOptions列挙体で指定する。(省略可)

戻り値は、System.Text.RegularExpressions.MatchCollectionクラスのインスタンスです。これはコレクションです。コレクションの各要素のValueプロパティを参照すると、パターンに一致した文字列が得られます。

試してみた

こんなコードで試してみました。標準出力に抽出した文字列を表示するコンソールアプリです。

using System;
using System.Text.RegularExpressions;

namespace regex_trial3
{
    class Program
    {
        static void Main(string[] args)
        {
            string kotoba = @"かえるぴょこぴょこみぴょこぴょこあわせてぴょこぴょこむぴょこぴょこ";
            MatchCollection matchedObjects = Regex.Matches(kotoba, @".ぴょこぴょこ");
            foreach (Match matched in matchedObjects)
            {
                Console.WriteLine(matched.Value);
            }
        }
    }
}

Regex.Matches()メソッドから戻るMatchCollectionクラスのインスタンスはコレクションですので、foreachでコレクションの各要素を取り出せます。そのときに使う変数はMatchクラスです。 実行した結果は、下記になりました。

るぴょこぴょこ
みぴょこぴょこ
てぴょこぴょこ
むぴょこぴょこ

検索パターンに一致する文字列4つが全部抽出されてますね。 この投稿で試した環境は下記です。

  • Visual Studio 2015 Express for Windows Desktop (C#)

公開日

広告