c# - 如何从 .NET RegEx 中提取子字符串?

标签 c# .net regex

我有一个包含一个(或多个)键/值对的 XML 文件。对于这些对中的每一对,我想提取一个两字节十六进制值的值。

所以 XML 包含这个片段:

<key>LibID</key><val>A67A</val>

我可以使用以下表达式进行匹配,ID 放在括号中。

Match match = Regex.Match(content, @"<key>LibID</key><val>([a-fA-F0-9]{4})</val>");

if (match.Success)
{
  Console.WriteLine("Found Match for {0}\n", match.Value);
  Console.WriteLine("ID was {0}\n", "Help me SO!");
}

我如何更改最后一部分以便它从匹配中返回 ID?

干杯!

最佳答案

我觉得你想要

match.Groups[1].Value

(正如 Dillie-O 在评论中指出的那样,它是第 1 组,因为第 0 组始终是整场比赛。)

简短但完整的测试程序:

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);
    }      
  }
}

输出:

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

关于c# - 如何从 .NET RegEx 中提取子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738543/

相关文章:

匹配 'password' 和 'admin' 的 Jquery 验证不起作用

c# - 多个 JOINS 之间有条件 : LINQ query

c# - ASP.net 在一个 ashx 文件中处理自定义文件扩展名的所有请求

c# - 在后台线程上初始化时,我的字段应该是易变的吗?

javascript - 正则表达式的三个点?

java - 第二个捕获组不捕获

c# - 与 C# 一起使用的 SQL Server 时间戳

c# - 将多个文件传递给函数

.net - 500 错误。内部 [后端错误] Google Api Push #gmail_watch

c# - 我什么时候应该为 ApartmentState.STA 设置一个线程?