regex - How to split using a prefix character using regular expressions? -


मैं उदाहरण स्ट्रिंग को विभाजित करना चाहूंगा:

~ पीटर ~ लोइस ~ क्रिस ~ मेग ~ स्टीव

चरित्र पर ~ और उसका परिणाम हो

पीटर
लोइस
क्रिस < Br> मेग
स्टीव

जावास्क्रिप्ट या सी # में एक मानक स्ट्रिंग विभाजन फ़ंक्शन का उपयोग करना पहला परिणाम निश्चित रूप से एक खाली स्ट्रिंग है। मैं पहले परिणाम की अनदेखी करने से बचना चाहता हूं क्योंकि पहले परिणाम वास्तव में एक खाली स्ट्रिंग हो सकता है।

मैं एक नियमित अभिव्यक्ति के उपयोग से लगभग नापसंद हूँ और मैं स्टम्प्ड हूं। मुझे यकीन है कि किसी ने इस पर आना और सुरुचिपूर्ण समाधान दिया है।

अपनी आवश्यकताओं के लिए, मैं दो विकल्प:

(1) प्रारंभिक उपसर्ग वर्ण निकालें, यदि मौजूद है।

(2) स्ट्रिंग को अलग करने के लिए पूर्ण नियमित अभिव्यक्ति का उपयोग करें।

दोनों ही हैं इस कोड में सचित्र:

  सिस्टम का उपयोग कर; System.Linq का उपयोग कर; System.Text.RegularExpressions का उपयोग कर; वर्ग एपीपी {स्थैतिक शून्य मुख्य () {स्ट्रिंग एस = "~ पीटर ~ लोइस ~ क्रिस ~ मेग ~ स्टीव"; // # 1 - ट्रिम + स्प्लिट कंसोल। WrightLine ("[# 1 - ट्रिम + स्प्लिट]"); स्ट्रिंग [] परिणाम = s.TrimStart ('~')। स्प्लिट ('~'); Foreach (परिणामस्वरूप स्ट्रिंग टी) {Console.WriteLine ("'" + "+ +" ""); } // # 2 - रेगेक्स कंसोल। WrightLine ("[# 2 - रेगेक्स]"); रेगेक्स आरई = नया रेगेक्स ("~ ([^ ~] *)"); MatchCollectionTheMatches = आरई। मैचों (एस); विदेशी (मैचों में मैच मैच) {कंसोल। वीडलाइन ("" "+ मैच। समूह [1]। वैल्यू +" ''); } // # 3 - रेगॉक्स के साथ LINQ [संशोधित करें @ ccook कोड] कंसोल। विरलाइन ("[# 3 - LINQ के साथ रेगेक्स]"); रीगएक्स। मैट्स (एस, "~ ([^ ~] *)") .ऑफ़ टाइप & लेफ्टिनेंट; मैच & gt; () .ToList () .पहले (एम = & gt; कंसोल। WrightLine ("'" + m.Groups [1] मान + "'")); }}  

# 2 में नियमित अभिव्यक्ति, सीमांकक चरित्र से मेल खाता है, इसके बाद शून्य या अधिक गैर-सीमांकक वर्ण वाले मेल समूह से मेल खाता है। परिणामी मिलान सीमांकित स्ट्रिंग हैं (किसी भी खाली स्ट्रिंग्स सहित) प्रत्येक मैच के लिए, "मैच। वैल्यू" प्रमुख सीमांकक और "मैच.समूह.वैल्यू" समूची स्ट्रिंग है, जो पहले मैच समूह है जिसमें सीमांकक मुक्त स्ट्रिंग है।

पूर्णता के लिए, तीसरा एन्कोडिंग (# 3) # 2 में एक ही नियमित अभिव्यक्ति पद्धति दिखाना शामिल है, लेकिन एक LINQ कोडन शैली में।

यदि आप नियमित अभिव्यक्ति के साथ संघर्ष कर रहे हैं, तो मैं अत्यधिक अनुशंसा करता हूं। यह अब तक, नियमित अभिव्यक्ति को समझने के लिए सबसे अच्छी सहायता है और बाद में आवश्यकतानुसार उत्कृष्ट संदर्भ या पुनश्चर्या के रूप में कार्य करता है।


Comments