使用Regex在字符串中查找包含多个换行符的子字符串

时间:2013-10-30 07:05:00

标签: c# regex

我需要对这个字符串使用正则表达式:


“\ r \ n + CMGL:0,\”REC READ \“,\”+ 79119968091 \“,, \”13/10 / 28,15:22:36 + 16 \“\ r \ n \ 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 \ n \ 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 \”,, \“13/10 / 28,15:22:36 + 16 \”\ r \ n \ n10160008 \ r \ n \ 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#ALARM ! \ r \ n10160008 \ r \ n $的GPMC,081915,A,5614.6801,N,04359.0266,E,0.0,190.2,121109 ,, * 19 \ r \ n
  3. 我有这个正则表达式

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

    这个正则表达式效果很好但表示最后一组(\ r \ n((。| \ n)*)\ r \ n \ b)。问题是我不知道 \ r \ n 符号字符串将有多少,直到我看到新子字符串的开始( \ r \ n + CMGL:)。 提前谢谢

1 个答案:

答案 0 :(得分:2)

\ r \ n + CMGL:开头,以 \ r \ n 结尾,您可以使用以下正则表达式:

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