-1

AT+CMGR=X (x は SIM カード上のメッセージのインデックス) から返される文字列から情報を取得しようとしています

文字列は

\r\n+CMGR: \"REC UNREAD\",\"TrueID/TMN\",\"\",\"12/07/24,14:48:11+07\"
\r\n
003400310036003000300037003800350035003A0E170E230E390E210E310E190E190E35
0E4800200041002F00430020003000380030003900350037003200360036003800200E220E2D
0E140E400E070E340E190E040E070E400E2B0E250E370E2D002000340030002E0030003000200E1A0E320E17
\r\n\r\n
OK\r\n

この文字列には有用な情報があります。

メッセージステータスの REC READ SMS の日付 SMS OK メッセージの内容

.NET Regular グループを使用してこの情報を取得できることを知っています。

便利な糸を見つけましたが、その糸のパターンを自分の弦に合った正しいパターンに調整できません。

String pattern = @"(?<a>\+CMGL):[ ](\d*),\""
                         (?<b>[^\""]*)"",
                         (?<c>\d*),(?<d>\d*),\""
                         (?<e>\+\d*)"",(?<f>\d*),\""
                         (?<g>\d*\/\d*\/\d*,\d{2}:\d{2}:\d{2}\-\d{2})\"",\""
                         (?<h>\d{2}\/\d{2}\/\d{2}),?\r\n,?
                         (?<i>\d{2}:\d{2}:\d{2}\-\d{2})\"",
                         (?<j>\d*)";

    Regex rx = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);
    Match m = rx.Match(testWord);
    while (m.Success)
    {
        Console.WriteLine(m.Groups["a"].Value);
        Console.WriteLine(m.Groups["b"].Value);
        Console.WriteLine(m.Groups["c"].Value);
        Console.WriteLine(m.Groups["d"].Value);
        Console.WriteLine(m.Groups["e"].Value);
        Console.WriteLine(m.Groups["f"].Value);
        Console.WriteLine(m.Groups["g"].Value);
        Console.WriteLine(m.Groups["h"].Value);
        Console.WriteLine(m.Groups["i"].Value);
        Console.WriteLine(m.Groups["j"].Value);
        Console.WriteLine("");
        m = m.NextMatch();
    }
    Console.ReadLine();
}

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/d652b20d-471c-4640-967c-b5fe71e3a42c/から

どうもありがとうございました。

4

1 に答える 1

0

pattern のすべての出現箇所を見つけて"([^"]+)"、ステータス ( OK )を取得しないのはなぜですか(\S+)\s+$

于 2012-07-24T14:19:29.770 に答える