c# - ismatch - ¿Cómo extraer una subcadena de un.NET RegEx?
regex replace c# (2)
Agrega una construcción de agrupación a tu expresión ...
<key>(?<id>LibID)</key><val>([a-fA-F0-9]{4})</val>
Eso capturará la identificación. Pero, debe poner el formato correcto en su expresión para el ID real, porque su expresión regular solo capturará "LibID" de forma literal.
Tengo un archivo XML que contiene uno (o más) pares clave / valor. Para cada uno de estos pares quiero extraer el valor que es un valor hexadecimal de dos bytes.
Así que el XML contiene este fragmento de código:
<key>LibID</key><val>A67A</val>
Que puedo hacer coincidir usando la siguiente expresión, con el ID entre paréntesis.
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!");
}
¿Cómo puedo cambiar la última parte para que devuelva el ID del partido?
¡Aclamaciones!
Creo que quieres
match.Groups[1].Value
(Como Dillie-O señala en los comentarios, es el grupo 1 porque el grupo 0 siempre es todo el partido).
Programa de prueba corto pero completo:
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);
}
}
}
Salida:
Found Match for <key>LibID</key><val>A67A</val>
ID was A67A