2016-03-22 3 views
0

Уважаемого Все, я застрял с чтением смс, которая имеет \n в строке сообщениярегулярного выражения для чтения строки, содержащей п

string __msg = "+CMGR: \"REC UNREAD\",\"+9230\",,,\"16/03/19,15:00:47+20\"\r\nRollNo: 1212\nName: Student\nAddress: Foo bar\r\n\r\nOK\r\n" 

Я пытался читать его в группе, используя ниже регулярные выражений в C#

Regex r = new Regex(@"\+CMGR: ""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); 
Match m = r.Match(__msg); 

но всегда возвращает ложь на матч

Пожалуйста, предложите мне, что мне нужно изменить, чтобы прочитать смс с \ п в строке сообщения. Благодарю.

+0

Ознакомьтесь с флагом 's' и используйте его. Я уверен, что кто-то придумает решение. Каково ваше правило для соответствия? –

+0

can u plz положил решение для руководства –

+0

Ваш вопрос непонятен. Почему бы не разбить строку на ',' во-первых? Затем удалите все '\ r' и замените' \ n' на '\ r \ n' –

ответ

0

Вы можете заменить .+ с [^"]+ для повышения производительности, а также позволяет переносы строк в полях, и убедитесь, что вы подходите все CR + ЛФ:

\+CMGR:\s*"([^"]+)","([^"]+)",([^"]*),"([^"]+)"[\r\n]+(.+)[\r\n]+ 

ВИДЕТЬ regex demo и ниже является C# code demo:

string __msg = "+CMGR: \"REC \nUNREAD\",\"+9230\",,,\"16/03/19,15:00:47+20\"\r\nRollNo: 1212\nName: Student\nAddress: Foo bar\r\n\r\nOK\r\n"; 
Regex r = new Regex(@"\+CMGR:\s*""([^""]+)"",""([^""]+)"",([^""]*),""([^""]+)""[\r\n]+(.+)[\r\n]+"); 
Match m = r.Match(__msg);   // And now, just the demo 
Console.WriteLine("Val: " + m.Value); 
Console.WriteLine("Grp1: " + m.Groups[1].Value); 
Console.WriteLine("Grp2: " + m.Groups[2].Value); 
Console.WriteLine("Grp3: " + m.Groups[3].Value); 
Console.WriteLine("Grp4: " + m.Groups[4].Value); 
+1

sorry bro, dnt имеет достаточно очков, чтобы проголосовать за него: '(но, тем не менее, это как ответ. Thnx 1nce снова. –

Смежные вопросы