1. ホーム
  2. c#

[解決済み】.NET Regexで名前付きキャプチャグループにアクセスするにはどうすればよいですか?

2022-04-04 16:53:03

質問

C#でNamed Capturing Groupsを使用する方法を説明する良いリソースを見つけるのに苦労しています。 これは、私がこれまでに持っているコードです。

string page = Encoding.ASCII.GetString(bytePage);
Regex qariRegex = new Regex("<td><a href=\"(?<link>.*?)\">(?<name>.*?)</a></td>");
MatchCollection mc = qariRegex.Matches(page);
CaptureCollection cc = mc[0].Captures;
MessageBox.Show(cc[0].ToString());

しかし、これでは常に全行が表示されるだけです。

<td><a href="/path/to/file">Name of File</a></td> 

いろいろなサイトで見つけた他のいくつかの"メソッド"を実験してみましたが、同じ結果ばかりが出ます。

正規表現で指定した名前付きキャプチャグループにアクセスするにはどうすればよいですか?

どのように解決するのですか?

Matchオブジェクトのグループコレクションを使用し、キャプチャしたグループ名でインデックスを作成します(例)。

foreach (Match m in mc){
    MessageBox.Show(m.Groups["link"].Value);
}