2013-10-30 87 views
5

我需要使用正則表達式來此字符串字符串與多個換行符字符串:查找使用正則表達式


「\ r \ n + CMGL:0,\」 REC READ \ 「\」 + 79119968091 \」 ,, \ 「一十分之十三/ 28,15:22:36 + 16 \」 \ r \ n10160008 \ r \ n $的GPMC,081915,A,5614.6801,N,04359.0266,E,0.0,190.2,121109 * 19 \ r \ n + CMGL:1,\「REC READ \」,\「+ 79119968091 \」,, \「13/10/28,15:34:26 + 16 \」\ r \ n# ALARM!\ r \ n10160008 \ r \ n $ GPMC,081915,A,5614.6801,N,04359.0266,E,0.0,190.2,121109 ,, * 19 \ r \ n \ r \ nOK \ r \ n「


我需要得到2個子字符串(每個子字符串開始智慧ħ\ r \ N + CMGL:和從字符串上面結束\ r \ n):

  1. \ r \ N + CMGL:0,\ 「REC READ \」,\「+ 79119968091 \」 ,, \ 「一十分之十三/ 28,15:22:36 + 16 \」 \ r \ n10160008 \ r \ n $的GPMC,081915,A,5614.6801,N,04359.0266,E,0.0,190.2,121109, ,* 19 \ r \ n
  2. \ r \ n + CMGL:1,\「REC READ \」,\「+ 79119968091 \」,, \「13/10/28,15:34:26 + 16 \ 「\ r \ n#報警! \ r \ n10160008 \ r \ n $的GPMC,081915,A,5614.6801,N,04359.0266,E,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

它返回+ CMGL:0,\「REC READ \」,\「+ 79119968091 \」,, \「13/10/28,15:22:36 + 16 \」\ r \ n10160008 \ r \ n + CMGL:0,\「REC READ \」,\「+ 79119968091 \」,, \「13/10/28,15:22:36 + 16 \」\ r \ n10160008 \ r \ n $ GPMC,081915, A,5614.6801,N,04359.0266,E,0.0,190.2,121109 ,, * 19 \ r \ n – Alekstim