मुझे रेड स्टूडियो XE2 में हाइपरस्ट्रिंग पार्सवॉर्ड फ़ंक्शन को प्रतिस्थापित करने के लिए डेल्फी फ़ंक्शन बनाने के लिए रेगेक्स सहायता की आवश्यकता है। हाइपरस्ट्रिंग एक बहुत ही उपयोगी स्ट्रिंग लाइब्रेरी थी जिसने कभी यूनिकोड पर कूद नहीं किया। मुझे यह ज्यादातर काम मिल गया है लेकिन यह उद्धरण delimiters का सम्मान नहीं करता है। मुझे नीचे वर्णित फ़ंक्शन के लिए सटीक मिलान होने की आवश्यकता है:रेगेक्स में उद्धृत पाठ को कैसे छोड़ें (या यूनिकोड टेक्स्ट के साथ हाइपरएसटी पारसेवार्ड का उपयोग कैसे करें?)
फ़ंक्शन पार्सवॉर्ड (कॉन्स स्रोत, तालिका: स्ट्रिंग; var अनुक्रमणिका: Integer): स्ट्रिंग;
अनुक्रमिक, एकल चरित्र डिलीमीटर की तालिका का उपयोग करके अनुक्रमिक, बाएं से दाएं टोकन पार्सिंग। उद्धृत तारों के भीतर Delimiters अनदेखा कर रहे हैं। तालिका में उद्धरण delimiters की अनुमति नहीं है।
सूचकांक एक सूचक समारोह के द्वारा अद्यतन (पहला शब्द के लिए '1' को प्रारंभ) अगले शब्द को इंगित करने के लिए है। अगले शब्द को पुनर्प्राप्त करने के लिए, बस पूर्व लौटाए गए इंडेक्स मान का उपयोग करके फ़ंक्शन को फिर से कॉल करें।
नोट: यदि लंबाई (परिणामस्वरूप) = 0, कोई अतिरिक्त शब्द उपलब्ध नहीं है। उद्धृत तारों के भीतर Delimiters अनदेखा कर रहे हैं।
function ParseWord(const Source, Table: String; var Index: Integer):string; var RE : TRegEx; match : TMatch; Table2, chars : string; begin if index = length(Source) then begin result:= ''; exit; end; // escape the special characters and wrap in a Group Table2 :='['+TRegEx.Escape(Table, false)+']'; RE := TRegEx.create(Table2); match := RE.Match(Source,Index); if match.success then begin result := copy(Source, Index, match.Index - Index); Index := match.Index+match.Length; end else begin result := copy(Source, Index, length(Source)-Index+1); Index := length(Source); end; end; while (Length(result)= 0) and (Index<length(Source)) do begin Inc(Index); result := ParseWord(Source,Table, Index); end;
चियर्स और धन्यवाद: (मेरे जोर)
यह वही है मैं अब तक है।
मुझे एसओ प्रोटोकॉल के बारे में निश्चित नहीं था कि किसको जवाब देना है। मैंने समाधान को एक अलग उत्तर के रूप में जोड़ा क्योंकि मैं @ स्टीफन के उत्तर पर टिप्पणी के रूप में इसे ठीक से प्रारूपित नहीं कर सका, लेकिन वह निश्चित रूप से मुझे इसका नेतृत्व करता है। – marcp