.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. C#
  5. 【C#正規表現の使い方1】Matchメソッドで文字列を抽出する

【C#正規表現の使い方1】Matchメソッドで文字列を抽出する

  • C#
  • プログラミング言語
公開日時:   更新日時:
【C#正規表現の使い方1】Matchメソッドで文字列を抽出する
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    C#で正規表現を扱う場合はRegexクラスを使用しますが、その中でも正規表現のパターンに応じて文字列を抽出する場合はMatchメソッドを使用します。
    この記事では、Regex.Matchメソッドについて解説していきますので、ぜひ参考にしてください。

    プログラマー
    文字列の中で数値の部分だけを抽出したいのですが、何か良い方法はあるでしょうか?
    プロジェクト
    リーダー
    正規表現を使用して数値を抽出することができますよ。RegexクラスのMatchメソッドについて調べてみてください。

    実行環境
    ・Windows 10 Home
    ・Visual Studio Community 2019

    Regex.Matchメソッドの概要

    C#で正規表現パターンと一致した文字列を抽出する場合、Regex.MatchメソッドまたはRegex.Matchesメソッドを使用します。2つの違いは以下のとおりです。

    • ・Matchメソッドは、最初に一致した文字列を抽出
    • ・Matchesメソッドは、一致したすべての文字列を抽出

    各メソッドには複数の定義が存在しますが、主なパターンを例に挙げて紹介します。

    入力文字列のうち、正規表現パターンで検索した結果をMatchオブジェクトで返します。Matchオブジェクトの主なプロパティも紹介しておきます。

    プロパティ 説明
    Index 正規表現パターンに一致した文字列のうち、最初の文字が見つかる元の文字列の位置
    Value 入力文字列から、正規表現パターンに一致した文字列

    また、Matchesメソッドの場合は、Matchオブジェクトのコレクションを返します。

    正規表現を使用した文字列の抽出

    まず、今回使用する正規表現パターンは以下となります。

    パターン 説明
    \d 数値(0~9)
    \w 英字、数値、記号
    + 1回以上の一致

    それでは、実際に正規表現を使用して文字列を抽出してみましょう。

    最初に一致した部分を抽出する

    Matchメソッドを使用して、文字列を抽出します。

    正規表現パターンとして「\d+-\d+」を指定しています。
    「\d」は数値(0~9)、「+」は1回以上の一致、「-」は文字列そのままとなり
    「-」を挟んで1回以上の数値を含む「000-0000」部分が一致するため、Valueに格納されています。Indexは1文字目を0としてカウントするため、先頭の数値(0)の位置は「4」となります。

    次は、入力文字列にパターン一致が複数存在する場合です。

    入力文字列のうち、正規表現に一致する文字列は「001」と「99」で複数存在します。しかし、Matchでは最初の一致を返すため、「001」がValueに格納されていますね。

    一致したすべての部分を抽出する

    最初に一致する部分だけでなく、すべての部分を抽出したい場合は、Matchesメソッドを使用します。

    Matchメソッドを使用した際は「001」のみが抽出されましたが、Matchesメソッドを使用したことにより、「99」も抽出することができました。

    重複する単語を識別して抽出する方法

    重複する単語を識別するために、新たに使用する正規表現パターンは以下となります。

    パターン 説明
    \b 単語の境界
    ? 0回または1回の一致
    ( ) 一致する部分文字列をグループ化※
    \s 空白文字と一致
    \1 \1のグループが示す部分文字列と一致

    ※グループは1から順番に割り当てられ、最初のグループを正規表現で使用したい場合は「\1」で表現する

    単語が重複している「is is」の部分が抽出されていますね。

    プログラマー
    なるほど、正規表現を使いこなせれば複雑な文字列も取得できそうですね。
    プロジェクト
    リーダー
    そうですね。まずは試行錯誤しながら、コードを組んでみてください。

    Regexクラスで文字列の抽出ができる

    今回は、Regex.Matchメソッドを使用した文字列の抽出を紹介しました。Regexクラスには正規表現を使用した様々なメソッドが用意されています。初めて耳にしたという方も、この機会にぜひ活用してみてください。

    >>>C#の案件を探すならFEnet .NET Navi

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    C#新着案件New Job