0

我在这里使用正则表达式提取字符串文本..

+CMGR: "REC UNREAD","MSG","","2013/11/04 14:17:43+28" 0E2A0E270E310E2A0E140E350E040E230E310E1A00200E220E340E190E140E350E150E490E2D0E190E230E310E1A0E040E230E310E1A0E170E380E010E460E040E19

我需要选择文本

“0E2A0E270E310E2A0E140E350E040E230E310E1A00200E220E340E190E140E350E150E490E2D0E190E230E310E1A0E040E230E310E1A0E170E3400E010E460E”

我使用代码:

        string strRegex = @"\b+CMGR: w+\n(\w+)\b";
        RegexOptions myRegexOptions = RegexOptions.Multiline;
        Regex myRegex = new Regex(strRegex, myRegexOptions);
        string strTargetString = @"+CMGR: ""REC UNREAD"",""MSG"","""",""2013/11/04 13:52:18+28""" + "\r\n" + @"0E2A0E270E310E2A0E140E350E040E230E310E1A00200E220E340E190E140E350E150E490E2D0E190E230E310E1A0E040E230E310E1A0E170E380E010E460E040E197";

        foreach (Match myMatch in myRegex.Matches(strTargetString))
        {
            if (myMatch.Success)
            {
               return myRegex.Split(strTargetString);
            }
        }

是提取不出来。。

谢谢

4

2 回答 2

3

要查找最后一行,您可以使用 \w+$ 模式:

string strRegex = @"\w+$";    
Regex myRegex = new Regex(strRegex);
string strTargetString = @"+CMGR: ""REC UNREAD"",""MSG"","""",""2013/11/04 13:52:18+28""" + "\r\n" + @"0E2A0E270E310E2A0E140E350E040E230E310E1A00200E220E340E190E140E350E150E490E2D0E190E230E310E1A0E040E230E310E1A0E170E380E010E460E040E197";
return myRegex.Match(strTargetString);

. 但最简单的方法是将字符串拆分为行并选择第二个:

strTargetString.Split('\n')[1]
于 2013-11-04T08:19:56.273 回答
0

您的代码将使用此模式:“^+.+\s”

void Main()
{
    string strRegex = @"^\+.+\s";
        RegexOptions myRegexOptions = RegexOptions.Multiline;
        Regex myRegex = new Regex(strRegex, myRegexOptions);
        string strTargetString = @"+CMGR: ""REC UNREAD"",""MSG"","""",""2013/11/04 13:52:18+28""" + "\r\n" + @"0E2A0E270E310E2A0E140E350E040E230E310E1A00200E220E340E190E140E350E150E490E2D0E190E230E310E1A0E040E230E310E1A0E170E380E010E460E040E197";

        foreach (Match myMatch in myRegex.Matches(strTargetString))
        {
            if (myMatch.Success)
            {
               Console.WriteLine(myRegex.Split(strTargetString));
            }
        }
}

输出

0E2A0E270E310E2A0E140E350E040E230E310E1A00200E220E340E190E140E350E150E490E2D0E190E230E310E1A0E040E230E310E1A0E170E380E010E460E040E197
于 2013-11-04T08:18:38.870 回答