2009-04-10 37 views
26

Tôi có tệp XML chứa một (hoặc nhiều) cặp khóa/giá trị. Đối với mỗi cặp này, tôi muốn trích xuất giá trị là giá trị hex hai byte.Làm thế nào để trích xuất một chuỗi con từ .NET RegEx?

Vì vậy, XML chứa đoạn mã này:

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

Mà tôi có thể kết hợp sử dụng các biểu thức sau đây, với ID trong ngoặc đơn.

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

Làm cách nào để thay đổi phần cuối để trả về ID từ trận đấu?

Chúc mừng!

Trả lời

48

Tôi nghĩ rằng bạn muốn

match.Groups[1].Value 

(Như Dillie-O chỉ ra trong các ý kiến, đó là nhóm 1 vì nhóm 0 luôn là toàn bộ trận đấu.)

ngắn nhưng đầy đủ chương trình thử nghiệm:

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 
+2

Đánh bại tôi. Bạn đã sử dụng một đối sánh được nhóm ở đó, vì vậy bạn có thể dễ dàng trích xuất giá trị được nhóm. Oh, và đối với hồ sơ, chỉ số 0 chứa toàn bộ chuỗi, đó là lý do tại sao bạn kiểm tra chỉ số 1. –

+0

Siêu cảm ơn. Tôi biết nó đã ở trong một nơi nào đó, tôi chỉ không biết ở đâu :) –

+0

@ Dillie-O: Điểm tốt, tôi đã bao gồm trong một chỉnh sửa. –

1

Thêm một grouping construct đến biểu hiện của bạn ...

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

Điều đó sẽ nắm bắt được ID. Tuy nhiên, bạn cần phải đặt định dạng chính xác trong biểu thức của bạn cho ID thực tế, bởi vì regex của bạn sẽ chỉ thu thập "LibID" trên toàn bộ.

+1

Tôi nghĩ bằng "ID" Andrew nghĩa là nội dung của phần tử , không phải là phần tử . –

Các vấn đề liên quan