2013-05-05 13 views
15

パターンは、このようなものです。通常のキャプチャグループであれば、キャプチャグループがキャプチャグループなしのグループ数よりも多いかどうかを確認できますが、ここではオプションはありません。名前付きキャプチャグループが存在するかどうかを確認する方法は?だから私は<code><somename></code>が存在するかどうかを知りたい</p> <pre><code>@"Something(d+, ""(.+)""(, .{1,5}, d+, (?<somename>d+)?)," </code></pre> <p>:私の正規表現で

誰かが私にこの方法を見つけるのを助けることができますか?私はそれが効率的である必要はありません、それはソートに使用される1回だけのプログラムのためです。だから、少し実行するのには気にしません。それは公的なコードではないでしょう。よると

答えて

23

documentation

グループ名は、コレクション内のキャプチャグループの名前でない場合は、 またはgroupnameは、 は、入力文字列にマッチしていないキャプチャグループの名前がある場合メソッドは、 Group.SuccessプロパティがfalseでGroup.Valueプロパティが String.EmptyのGroupオブジェクトを返します。

var regex = new Regex(@"Something\(\d+, ""(.+)""(, .{1,5}, \d+, (?<somename>\d+)?\),"); 
var match = regex.Match(input); 
var group = match.Groups["somename"]; 
bool exists = group.Success; 
+2

私はIndexOutOfRangeExceptionを予想していました。それを試したことがあります。愚か。ありがとう! +1。 –

関連する問題