2008-08-26 5 views

答えて

6

Matchは、対象テキストの一部(一部)に一致する特定の正規表現を示すオブジェクトです。 Groupは、元の正規表現にグループマーカー(基本的にカッコ内のパターン)が含まれていた場合、一致する部分を示します。例えば、次のコードで:

string text = "One car red car blue car"; 
string pat = @"(\w+)\s+(car)"; 
Match m = r.Match(text); 

mは、2つのグループ含まマッチオブジェクトであろう - 良く、一致(\w+)からグループ1を、その捕捉「1」、及び((car)から)グループ2、 "車"。

2

マッチは正規表現に一致する文字列の一部です。したがって、文字列内に複数の一致が存在する可能性があります。

マッチの中で、匿名または名前付きのグループを定義して、マッチを分割しやすくすることができます。簡単な例として、URLを検索して内部のグループを使用してプロトコル(http)、ドメイン(www.web.com)、パス(/lol/cats.html)、引数などを検索する正規表現を作成します。私が言ったようにあなたがRegex.Matches(文字列テキスト)を使用する場合は複数の一致、ゼロから成るそれぞれ、1つまたは複数のグループに戻ってきますので、一つのパターンは、文字列内に複数回を見つけることができます

// Example I made up on the spot, probably doesn't work very well 
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])" 

これらの名前付きグループは、番号で索引付けするか、文字列で見つけることができます。上記の例は次のように使用することができます:物事がもっとおもしろくするため

Match match = pattern.Match(urls); 
if (!match.Success) 
    continue; 
string protocol = match.Groups["protocol"].Value; 
string domain = match.Groups[1].Value; 

、1グループが複数回マッチすることができ、その後私はdocumentationを読み始めるお勧めします。

グループを使用して逆参照を生成し、部分検索と置換を行うこともできますが、その詳細はMSDNでお読みください。

関連する問題