2010-11-25 14 views
2

C#Regexes:名前付きキャプチャグループと番号付きキャプチャグループ

var re = new Regex(@"(?<name>\w+)(x)\1\2"); 
Console.WriteLine(re.IsMatch("yxxy")); 

Trueを印刷すると、無名のキャプチャグループは1から始まり、からという名前のキャプチャグループには後に番号が割り当てられます。これは正しい/意図された動作ですか?

+0

奇妙な動作のようです。あなたが上でやったことは決して試してみませんでしたが、私はいつもそれがナンバリングで左手側から始まったと思っていました。 –

+0

@mastoj:ええと...それもそうかもしれないと思っていたので、調査しなければならなかったのです! – mpen

答えて

3

少なくともMSDNはこう述べています。 http://msdn.microsoft.com/en-us/library/bs2twtah(VS.71).aspx。この記事の新しいバージョンでは確認されていますが、この情報を見つけるのは難しいです。 Named matched subexpressions are numbered consecutively from left to right after matched subexpressions.

+0

そこに埋もれて...ありがとう! – mpen

+1

@マーク:他のプログラミング言語の正規表現に移行する場合は、これに注意する必要があります。番号の付いたグループは、名前があるかどうかにかかわらず、厳密に左から右であることがより一般的です。 – tchrist

関連する問題