How to extract a substring from a .NET RegEx?

后端 未结 2 1806
不知归路
不知归路 2020-12-30 18:31

I have an XML file containing one (or more) key/value pairs. For each of these pairs I want to extract the value which is a two-byte hex value.

So the XML contains t

相关标签:
2条回答
  • 2020-12-30 19:27

    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
    
    0 讨论(0)
  • 2020-12-30 19:28

    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.

    0 讨论(0)
提交回复
热议问题