C# 不一致字符串的Regex Match.NextMatch()

C# 不一致字符串的Regex Match.NextMatch(),c#,regex,C#,Regex,我有以下输入字符串: AT+CMGL=4\r\r\n+CMGL: 1,1,,155\r\nDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSDGFH23FJ24HGJH58G4D7D465HDK31HFDJCHGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVGDJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH\r\n+CMGL: 2,1,,126\r\nDFGDF312GF

我有以下输入字符串:

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本身(NDFGDF312GF4J5457JG8J0JGKFJ345G67JHGFGHJ06FD45HJG86J958F4FHSGSSDGFH23FJ24HGJH58G4D47D465HDK31HFDJGH8V7GD45231DFGF314J567V6GGK4GFJCHGKVJX765GHFCJX2X4537CCGHGK9VHJ3C2FJXJCGH).

您的
regex
是正确的..您只需要对regex使用
单线
模式

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
}

我们怎么能从这个字符串中猜出你想要什么呢..你需要指定..另外,
regex
用于
有规律的
发生模式而不是
无规律的
模式@Some1.Kill.The.DJ我已经在文章的编辑部分指定了它。嗯,这只是整个字符串的第一部分和最后一部分不一样,其余部分将是一个规则的发生模式。在使用正则表达式之前,我可以做一些字符串格式设置,但我认为如果使用正则表达式可以实现,那将是一个更好/更干净的解决方案。。。