2009-04-10 12 views
26

मेरे पास एक एक्सएमएल फ़ाइल है जिसमें एक (या अधिक) कुंजी/मान जोड़े हैं। इन जोड़ों में से प्रत्येक के लिए मैं उस मूल्य को निकालना चाहता हूं जो दो-बाइट हेक्स मान है।.NET RegEx से एक substring निकालने के लिए कैसे?

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

कौन सा मैं निम्नलिखित अभिव्यक्ति का उपयोग कर मिलान कर सकते हैं, कोष्टक में आईडी के साथ:

तो एक्सएमएल इस स्निपेट शामिल हैं।

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

मैं अंतिम भाग कैसे बदल सकता हूं ताकि यह मैच से आईडी लौटा सके?

चीयर्स!

उत्तर

48

मुझे लगता है कि आप चाहते हैं

match.Groups[1].Value 

(Dillie-ओ टिप्पणी में बताते हैं, यह समूह 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 
+2

मुझे इसे मारो। आप पहले से ही एंड्रयू के समूहबद्ध मिलान का उपयोग कर रहे हैं, ताकि आप आसानी से समूहित मूल्य निकाल सकें। ओह, और रिकॉर्ड के लिए, इंडेक्स 0 में संपूर्ण स्ट्रिंग है, यही कारण है कि आप इंडेक्स 1. –

+0

सुपर धन्यवाद की जांच करते हैं। मुझे पता था कि यह कहीं कहीं था, मुझे अभी नहीं पता था :) –

+0

@ डिली-ओ: अच्छा बिंदु, मैंने इसे एक संपादन में शामिल किया है। –

1

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

कि आईडी कब्जा अपनी अभिव्यक्ति के लिए एक grouping construct जोड़ें ...। लेकिन, आपको वास्तविक अभिव्यक्ति के लिए अपनी अभिव्यक्ति में सही प्रारूप डालना होगा, क्योंकि आपका रेगेक्स केवल "लिबआईड" को कर्कश रूप से कैप्चर करेगा।

+1

मुझे लगता है कि "आईडी" एंड्रयू का मतलब है तत्व की सामग्री, तत्व नहीं। –

संबंधित मुद्दे