2013-01-04 60 views
1

我有這個輸入字符串:正則表達式Match.NextMatch()的字符串,它是不相符的

AT+CMGL=4\r\r\n+CMGL: 1,1,,155\r\nDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSDGFH23FJ24HGJH58G4D7D465HDK31HFDJCHGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVGDJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH\r\n+CMGL: 2,1,,126\r\nDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSDGFH23FJ24HGJH58G4D7D465HDK31HFDJCHGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVGDJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH\r\n+CMGL: 3,1,,148\r\nDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSDGFH23FJ24HGJH58G4D7D465HDK31HFDJCHGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVGDJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH\r\n\r\nOK\r\n 

我想這樣做就這一個提取兩個捕獲組正則表達式匹配,並通過每場比賽迭代與NextMatch()方法。

我能實現不包括該字符串這將是對於第一和最後一次迭代不同的開始(AT+CMGL=4\r\r\n)和結束(\r\nOK\r\n)部分匹配。

這是我使用的部分比賽,我能夠實現正則表達式:

\+CMGL: \d+,\d+,,(\d+)\\r\\n(.*?)\\r\\n 

如何將正則表達式的語法是否正確模樣得到一個完整的比賽?

編輯:我想捕捉的PDU長度(155)和PDU本身(nDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSDGFH23FJ24HGJH58G4D7D465HDK31HFDJCHGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVGDJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH)每個NextMatch()。

+1

以及我們如何能猜出你**想要什麼**從string..you需要指定。 .'正則表達式'用於'定期'出現的模式**而不是''不規則'模式! – Anirudha

+0

@ Some1.Kill.The.DJ我在文章的編輯部分已經指定了它。那麼它只是整個字符串的第一部分和最後一部分不一樣,其餘部分將是一個常規發生模式。我可以做一些字符串格式化之前使用正則表達式使其適合,但我想如果它是可以實現的正則表達式,這將是一個更好/更清潔的解決方案... – jmelhus

+0

檢查我的答案 – Anirudha

回答

2

regex是correct..you只需要使用singleline模式正則表達式

Regex myRegex = new Regex(yourRegex,RegexOptions.IgnoreCase | RegexOptions.Singleline); 
foreach(Match m in myRegex.Matches(yourText)) 
{ 
    m.Groups[1].Value;//pdu length 
    m.Groups[2].Value;//pdu buffer 
} 
相關問題