2013-10-30 94 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