从设备读取短信的正则表达式

时间:2013-04-02 06:00:37

标签: c# regex

我使用以下代码从移动设备获取短信。问题是它不会读取空字符,新行(\ N)和\ r。

try
{

    Regex r = new Regex(@"\+CMGL: (\d*),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n");
    Match m = r.Match(input);
    while (m.Success)
    {
        ShortMessage msg = new ShortMessage();
        //msg.Index = int.Parse(m.Groups[1].Value);
        msg.Index = m.Groups[1].Value;
        msg.Status = m.Groups[2].Value;
        msg.Sender = m.Groups[3].Value;
        msg.Alphabet = m.Groups[4].Value;
        msg.Sent = m.Groups[5].Value;
        msg.Message = m.Groups[6].Value;
        //string a = msg.Message;
        //string replacement = Regex.Replace(a, @"\t|\n|\r", "");
       // msg.Message = replacement;
        messages.Add(msg);

        m = m.NextMatch();
    }

}

例如:

如果短信主体包含:“我的名字是bilal Ahmed”它会读取上面的短信

如果我的短信是:“我的名字是\ n bilal Ahmed”它将无法读取短信。

例如,如果我的短信是:“”,它将无法读取短信。

我认为使用正则表达式存在一些问题。

1 个答案:

答案 0 :(得分:1)

最好向我们展示您输入的全文,但我猜您可以尝试使用类似的内容

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