Home > C# > C# 学び直し > 正規表現

msdnのRegex.Matchメソッドの説明を翻訳した

新規作成日 2017-11-08/
最終更新日

Regex.Matchメソッドは、正規表現を使って入力文字列内の最初に出現するパターンに一致する文字列を取得するメソッドです。

確認した時点では、msdnのRegex.Match メソッドの説明は、翻訳が読みにくいので、自分で翻訳し直しました。

全ての部分を翻訳し直したわけではなく、また、リンクも再現していないので、元のページと比較しながらご利用下さい。

Regex.Matchメソッド(String)

msdnの情報:Regex.Matchメソッド(String)

Regexコンストラクタで、指定された正規表現の最初の出現のための指定された入力文字列を検索します。

構文

public Match Match(
        string input
)

パラメーター

  • input

    Type: System.String

    一致するものを検索する文字列。

  • 戻り値

    Type: System.Text.RegularExpressions.Match

    オブジェクトは、一致に関する情報が含まれています。

例外

例外 状態
ArgumentNullException 入力はnullです。
RegexMatchTimeoutException タイムアウトが発生しました。タイムアウトの詳細については、Remarksセクションを参照してください。

備考

Match(String)メソッドは、入力文字列内の正規表現パターンに一致する、最初の部分文字列を返します。正規表現パターンを構築するために使用される、言語要素に関する情報については、正規表現言語 ― クイック・リファレンス ― を参照してください。

あなたは、返されたMatchオブジェクトのSuccessプロパティの値を確認することで、正規表現パターンが入力文字列で見つかったかどうかを判断することができます。一致が見つかると、返されたMatchオブジェクトのValueプロパティは、正規表現パターンに一致する入力から、部分文字列が含まれています。一致するものが見つからない場合、その値はString.Emptyです。

このメソッドは、入力の最初の部分文字列を返します。それは、正規表現パターンに一致します。あなたは、返されたMatchオブジェクトのMatch.NextMatchメソッドを繰り返し呼び出すことによって、その後の一致を検索することができます。また、Regex.Matches(String)メソッドを呼び出すことによって、あなたは、一つのメソッドの呼び出しで、すべての一致を取得することができます。

Regex.Regex(String, RegexOptions, TimeSpan)コンストラクタで、一致する操作の実行時間が、指定されたタイムアウト間隔を超過する場合、RegexMatchTimeoutException例外が、投げられます。あなたが、コンストラクタを呼び出すとき、タイムアウト間隔を設定しない場合、操作が、Regexオブジェクトが作成されるアプリケーション・ドメインのために設置したタイムアウト値を超過する場合、例外が、投げられます。Regexコンストラクタで、タイムアウトが定義されない場合、アプリケーション・ドメインはプロパティで、呼び出します。あるいは、タイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外が、投げられません。

使用例

次の例では、文字列内で、正規表現パターンが一致することを見つけます。続いて、一致されたグループ、キャプチャとキャプチャ位置を一覧にします。

using System;
using System.Text.RegularExpressions;

class Example 
{
   static void Main() 
   {
      string text = "One car red car blue car";
      string pat = @"(\w+)\s+(car)";

      // Instantiate the regular expression object.
      // 新しい正規表現オブジェクトをインスタンス化します。
      Regex r = new Regex(pat, RegexOptions.IgnoreCase);

      // Match the regular expression pattern against a text string.
      // テキスト文字列に正規表現パターンが一致します。
      Match m = r.Match(text);
      int matchCount = 0;
      while (m.Success) 
      {
         Console.WriteLine("Match"+ (++matchCount));
         for (int i = 1; i <= 2; i++) 
         {
            Group g = m.Groups[i];
            Console.WriteLine("Group"+i+"='" + g + "'");
            CaptureCollection cc = g.Captures;
            for (int j = 0; j < cc.Count; j++) 
            {
               Capture c = cc[j];
               System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
            }
         }
         m = m.NextMatch();
      }
   }
}
// This example displays the following output:
//       Match1
//       Group1='One'
//       Capture0='One', Position=0
//       Group2='car'
//       Capture0='car', Position=4
//       Match2
//       Group1='red'
//       Capture0='red', Position=8
//       Group2='car'
//       Capture0='car', Position=12
//       Match3
//       Group1='blue'
//       Capture0='blue', Position=16
//       Group2='car'
//       Capture0='car', Position=21

正規表現パターン(\w+)\s+(car)は、その前にある単語と一緒に、単語"car"の出現に一致します。それは、次の表に示すように解釈されます。

パターン 説明
(\w+) 1つ以上の単語の文字に一致します。これが、最初のキャプチャ・グループです。
\s+ 1つ以上の空白文字に一致します。
(car) リテラル文字列"car"に一致します。これは、2つ目のキャプチャ・グループです。

Regex.Matchメソッド(String, String)

msdnの情報:Regex.Matchメソッド(String, String)

指定された正規表現が最初に出現するまで、指定された入力文字列を検索します。

構文

public static Match Match(
        string input,
        string pattern
)

パラメーター

  • input

    Type: System.String

    一致するものを検索する文字列。

  • pattern

    Type: System.String

    一致する正規表現パターン。

  • 戻り値

    Type: System.Text.RegularExpressions.Match

    オブジェクトは、一致に関する情報が含まれています。

例外

例外 状態
ArgumentException 正規表現の解析エラーが発生しました。
ArgumentNullException 入力やパターンが、nullです。
RegexMatchTimeoutException タイムアウトが発生しました。タイムアウトの詳細については、Remarksセクションを参照してください。

備考

Match(String, String)メソッドは、入力文字列内の正規表現パターンに一致する、最初の部分文字列を返します。正規表現パターンを構築するために使用される、言語要素に関する情報については、正規表現言語 ― クイック・リファレンス ― を参照してください。

static Match(String, String)メソッドは、正規表現パターンを指定して、Regexオブジェクトを構築するための同等のものです。そして、インスタンスMatch(String)メソッドを呼び出します。この場合、正規表現エンジンは、正規表現パターンをキャッシュします。

パターン・パラメータは、正規表現の言語要素から構成されています。一致する文字列を象徴的に記述します。正規表現の詳細については、.NET Frameworkの正規表現と正規表現言語 ― クイック・リファレンス ― を参照してください。

あなたは、正規表現パターンが入力文字列で見つかったかどうかを判断することができます。返されたMatchオブジェクトのSuccessプロパティの値を確認することで、一致が見つかると、返されたMatchオブジェクトのValueプロパティは、入力から、部分文字列が含まれています。それは、正規表現パターンに一致します。一致するものが見つからない場合、その値はString.Emptyです。

このメソッドは、入力の最初の部分文字列を返します。それは、正規表現パターンに一致します。あなたは、その後の一致を検索することができます。返されたMatchオブジェクトのMatch.NextMatchメソッドを繰り返し呼び出すことによって、また、あなたは、Regex.Matches(String, String)メソッドを呼び出すことによって、一つのメソッドの呼び出しで、すべての一致を取得することができます。

一致する操作の実行時間が、メソッドが呼び出されるアプリケーション・ドメインのための、指定されたタイムアウト間隔を超過する場合、RegexMatchTimeoutException例外が、投げられます。アプリケーションドメインのプロパティにタイムアウトが定義されていない場合、あるいは、タイムアウト値がRegex.InfiniteMatchTimeoutの場合、例外が、投げられません。

呼び出し時の注意:

このメソッドは、一定間隔の後、タイムアウトします。これは、呼び出されるアプリケーション・ドメインの既定のタイムアウト値と等価です。タイムアウト値が、アプリケーション・ドメインに定義されていない場合、メソッドがタイムアウトするのを防ぐRegex.InfiniteMatchTimeout値が使われます。パターンの一致を取得することのために推奨された静的メソッドは、あなたにタイムアウト間隔を設定させるRegex.Match(String, String)です。

使用例

次の例では、Match(String, String)メソッドを呼び出して、少なくとも1つのz文字が含まれている最初の単語を検索します。そして、その次に、更なる一致を見つけるために、Match.NextMatchメソッドを呼び出します。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "ablaze beagle choral dozen elementary fanatic " +
                     "glaze hunger inept jazz kitchen lemon minus " +
                     "night optical pizza quiz restoration stamina " +
                     "train unrest vertical whiz xray yellow zealous";
      string pattern = @"\b\w*z+\w*\b";
      Match m = Regex.Match(input, pattern);
      while (m.Success) {
         Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index);
         m = m.NextMatch();
      }   
   }
}
// The example displays the following output:
//    'ablaze' found at position 0
//    'dozen' found at position 21
//    'glaze' found at position 46
//    'jazz' found at position 65
//    'pizza' found at position 104
//    'quiz' found at position 110
//    'whiz' found at position 157
//    'zealous' found at position 174

正規表現パターン\b\w*z+\w*\bは、次の表で示すように解釈されます。

パターン 説明
\b 単語の境界で一致を開始します。
\w* 0、1やより多くの単語文字に一致します。
z+ z文字の1つ以上の出現に一致します。
\w* 0、1やより多くの単語文字に一致します。
\b 単語の境界で一致を終了します。
このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」