You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式无法匹配\r\n换行符之间的内容该如何解决

问题原因

默认状态下正则表达式的.元字符无法匹配换行符(\r、\n),你需要匹配的短信内容是跨多行的,所以原来的写法无法匹配到Test1\nTest2这段内容。

解决方案

开启正则的单行模式(Singleline),该模式下.可以匹配包括换行符在内的所有字符,同时调整正则规则匹配到完整的短信内容段,修改后的代码如下:

string input = "\r\n+CMGL: 3,\"REC UNREAD\",\"+999999999\",,\"21/07/15,14:06:38+08\",145,10\r\nTest1\nTest2\r\n\r\nOK\r\n";
// 指定RegexOptions.Singleline开启单行模式
Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",,""(.+),(.+)""[^\r\n]*\r\n(.+?)\r\n\r\nOK", RegexOptions.Singleline);

if (r.IsMatch(input))
{
    Match result = r.Match(input);
    // 第6个捕获组对应短信内容:Test1\nTest2
    string content = result.Groups[6].Value;
}

规则说明

  • 新增的[^\r\n]*匹配+CMGL行末尾你之前未匹配的,145,10内容,直到行尾
  • 非贪婪匹配符.+?会在单行模式下匹配所有内容,直到遇到后续的\r\n\r\nOK标识停止,避免匹配过多内容
  • 各捕获组对应内容依次为:短信序号、接收状态、发送号码、接收日期、接收时间、短信正文

内容的提问来源于stack exchange,提问作者RegexHelp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 11:54:03