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

Ale*_*tim 5 c# regex

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


为 "\ 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 \" ,, \"一十分之十三/ 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#ALARM!\ 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)");
Run Code Online (Sandbox Code Playgroud)

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

Spi*_*ode 2

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

\\r\\n\+CMGL:.*?\*19\\r\\n
Run Code Online (Sandbox Code Playgroud)