How to extract a substring from a .NET RegEx?

Solution 1:

I think you want

match.Groups[1].Value

(As Dillie-O points out in the comments, it's group 1 because group 0 is always the whole match.)

Short but complete test program:

using System;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    Regex regex = new Regex("<key>LibID</key><val>([a-fA-F0-9]{4})</val>");
    Match match = regex.Match("Before<key>LibID</key><val>A67A</val>After");

    if (match.Success)
    {
      Console.WriteLine("Found Match for {0}", match.Value);
      Console.WriteLine("ID was {0}", match.Groups[1].Value);
    }      
  }
}

Output:

Found Match for <key>LibID</key><val>A67A</val>
ID was A67A

Solution 2:

Add a grouping construct to your expression ...

<key>(?<id>LibID)</key><val>([a-fA-F0-9]{4})</val>

That will capture the ID. But, you need to put the correct format in your expression for the actual ID, because your regex will only capture "LibID" litterally.