【发布时间】:2013-01-04 18:22:39
【问题描述】:
我有这个输入字符串:
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
正则表达式的正确语法应该如何获得完全匹配?
EDIT: I would like to capture the pdu length (155) and the pdu itself (nDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSDGFH23FJ24HGJH58G4D7D465HDK31HFDJCHGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVGDJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH) for each NextMatch().
【问题讨论】:
-
以及我们如何从该字符串中猜出您想要的内容..您需要指定..还有
regex用于regularly发生模式不是irregular模式! -
@Some1.Kill.The.DJ 我已经在帖子的编辑部分指定了它。好吧,只有整个字符串的第一部分和最后一部分不一样,其余部分将是常规出现的模式。在使用正则表达式使其适合之前,我可以进行一些字符串格式化,但我认为如果它可以通过正则表达式实现,那将是一个更好/更清洁的解决方案......