2016-03-22 103 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#中使用下面的正則表達式組讀它具有\n短信

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

,但它總是在比賽返回false

請建議我什麼,我需要更改與\ n在其消息字符串讀短信。謝謝。

+0

閱讀's'標誌並使用它。我確信有人會想出一個解決方案。你的匹配規則是什麼? –

+0

可以üPLZ把解決方案的指導 –

+0

你的問題不清楚。爲什麼不首先將字符串分割成'','?然後刪除所有'\ r'並用'\ r \ n'代替'\ n' –

回答

0

您可以[^"]+替代.+以提高性能,並允許領域內換行符,並確保符合所有CR + LF類:

​​

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

抱歉,兄弟,dnt有足夠的積分投票:'(但是,標記爲答案。thnx 1nce再次。 –

相關問題