プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2019/02/04

[C#] 正規表現で文字列を抽出する

event_note2019/02/04 2:04

正規表現を使って文字列から文字列を抽出する方法です。

基本

サンプルコード

// 抽出対象の文字列
var target = "foohogebarpiyo";

// 正規表現で抽出したい文字列のパターンを指定
var rgx = new Regex("foo(.*)bar(.*)", RegexOptions.IgnoreCase);

// 正規表現のパターンと抽出対象の文字列を照合
var match = rgx.Match(target);
if (match.Success)
{
    // 0番目には対象の文字列が入る
    // Console.WriteLine(match.Groups[0].Value);

    // 1番目以降に抽出した文字列が順に入る
    // Console.WriteLine(match.Groups[1].Value);
    // Console.WriteLine(match.Groups[2].Value);

    foreach (var item in match.Groups)
    {
        Console.WriteLine(item);
    }
}

結果

foohogebarpiyo
hoge
piyo

パターンに一致した文字列を全て抽出

最短一致で指定します。

サンプルコード


// 抽出対象の文字列
var target = "foohogebarfoopiyobar";

// 正規表現で抽出したい文字列のパターンを指定
var rgx = new Regex("foo(.*?)bar", RegexOptions.IgnoreCase);

// 正規表現のパターンと抽出対象の文字列を照合する
var matches = rgx.Matches(target);
foreach (Match match in matches)
{
    if (match.Success)
    {
        foreach (var item in match.Groups)
        {
            Console.WriteLine(item);
        }
    }
}

結果

foohogebar
hoge
foopiyobar
piyo