Regex

2013-10-30 6 views
5

का उपयोग कर मैं इस स्ट्रिंग के लिए रेगुलर एक्सप्रेशन का उपयोग करने की आवश्यकता है स्ट्रिंग में एक से अधिक न्यू लाइन पात्रों के साथ सबस्ट्रिंग खोजें:Regex


"\ r \ n + CMGL: 0, \" आरईसी पढ़ें \ ", \" + 79119968091 \ ",, \" 13/10/28,15: 22: 36 + 16 \ "\ r \ n10160008 \ r \ n $ GPMC, 081,915, ए, 5614.6801, एन, ०४,३५९.०२६६, ई, 0.0,190.2,121109 , * 1 9 \ आर \ n + सीएमजीएल: 1, \ "आरईसी पढ़ें \", \ "+ 791199680 9 1 \", \ "13/10/28,15: 34: 26 + 16 \" \ r \ n # ALARM! \ R \ n10160008 \ r \ n $ जीपीएमसी, 081915, ए, 5614.6801, एन, 0435 9.0266, ई, 0.0,190.2,12110 9, * 1 9 \ r \ n \ r \ n ओके \ r \ n "


मुझे 2 सबस्ट्रिंग प्राप्त करने की आवश्यकता है (प्रत्येक substring बुद्धि शुरू होता है ज \ r \ n + CMGL: और \ r \ n) ऊपर स्ट्रिंग से साथ समाप्त होता है:

  1. \ r \ n + CMGL: 0, \ "आरईसी पढ़ें \", \ "+ +७९११९९६८०९१ \ ",, \" 13/10/28,15: 22: 36 + 16 \ "\ r \ n10160008 \ r \ n $ GPMC, 081,915, ए, 5614.6801, एन, ०४,३५९.०२६६, ई, 0.0,190.2,121109, , * 1 9 \ आर \ n
  2. \ r \ n + सीएमजीएल: 1, \ "आरईसी पढ़ें \", \ "+ 791199680 9 1 \", \ "13/10/28,15: 34: 26 + 16 \ "\ r \ n # ALARM! \ R \ n10160008 \ r \ n $ GPMC, 081,915, ए, 5614.6801, एन, ०४,३५९.०२६६, ई, 0.0,190.2,121109 ,, * 19 \ r \ n

मैं इस नियमित अभिव्यक्ति है

Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""(\r\n((.|\n)*)\r\n\b)"); 

यह नियमित अभिव्यक्ति अच्छा काम करती है लेकिन पिछले समूह (\ r \ n ((। | \ N) *) \ r \ n \ b) के लिए नहीं है। समस्या यह है कि मुझे नहीं पता कि \ r \ n प्रतीक स्ट्रिंग तब तक रहेगी जब तक कि मैं नए सबस्ट्रिंग (\ r \ n + CMGL:) की शुरुआत नहीं देखता। अग्रिम

+1

आप पा सकते हैं यह उपयोगी है: http: //gskinner.com/RegExr/ – Tafari

उत्तर

2

में धन्यवाद के साथ \ r \ n + CMGL शुरू के लिए: और के साथ समाप्त \ r \ n आप नियमित अभिव्यक्ति नीचे का उपयोग कर सकते हैं:

\\r\\n\+CMGL:.*?\*19\\r\\n 
+0

उत्तर के लिए धन्यवाद, लेकिन एक बार मेरे प्रश्न को पढ़ें। सबस्ट्रिंग '\ r \ n + CMGL:' से शुरू होता है और '\ r \ n' के साथ समाप्त होता है, लेकिन इसमें बहुत सारे '\ r \ n' प्रतीक शामिल हो सकते हैं, और मुझे नहीं पता कि यह कितना है। – Alekstim

+0

हां। इसलिए यह नियमित अभिव्यक्ति \ r \ n + CMGL से शुरू होने वाली स्ट्रिंग लेगी: और अगले \ r \ n पर विचार करें। – SpiderCode

+0

यह + सीएमजीएल: 0, \ "आरईसी पढ़ें \", \ "+ 791199680 9 1 \", \ "13/10/28,15: 22: 36 + 16 \" \ r \ n10160008 \ r \ n है लेकिन नहीं + सीएमजीएल: 0, \ "आरईसी पढ़ें \", \ "+ 7911 99680 9 1 \", \ "13/10/28,15: 22: 36 + 16 \" \ r \ n10160008 \ r \ n $ जीपीएमसी, 081915, ए, 5614.6801, एन, 0435 9.0266, ई, 0.0,190.2,12110 9, * आपकी स्ट्रिंग में 1 9 \ r \ n – Alekstim