解析AT命令响应的正则表达式
本文关键字:正则表达式 响应 命令 AT 解析 | 更新日期: 2023-09-27 18:01:29
我正在尝试从AT命令响应中获得返回消息。
这是输入:
+ CUSD = 1,"* 124 #",15
好吧
+CUSD: 2,"00302220100您的主余额为10K,有效期至2015年10月23日。如需更多余额详情,请发送BAL至1"
我的预期结果是:
下面是我的代码:00302220100你的主余额是10K,有效期到23/10/2015。如需更多余额详情,请发送BAL至1
private string ParseMessages_ChkCredit(string input)
{
string messages = "";
Regex r = new Regex("''AT+CUSD: (''d+),'"(.*?)'"", RegexOptions.Singleline);
Match m = r.Match(input);
while (m.Success)
{
messages = m.Groups[2].Value.ToString();
break;
}
return messages;
}
正则表达式不匹配。请帮帮我。非常感谢。
(?<=AT'+['s'S]*?CUSD:[^"]*")[^"]*
您可以使用variable lookbehind
.参见演示。
string strRegex = @"(?<=AT'+['s'S]*?CUSD:[^""]*"")[^""]*";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strTargetString = @"AT+CUSD=1,""*124#"",15" + "'n" + @"OK" + "'n'n" + @"+CUSD: 2,""00302220100 Your main balance is 10K, valid until 23/10/2015. For more balance details, please send BAL to 1""" + "'n";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
if (myMatch.Success)
{
// Add your code here
}
}
你可以试试这个regex:
(?<='+CUSD': 2,'")(.+)
现场演示
可以使用
(?<='+CUSD:'s+2,")[^"]+
在c#中声明为:
var rx = new Regex(@"(?<='+CUSD:'s+2,"")[^""]+");
(?<='+CUSD:'s+2,")
查找将检查字符串中的正确位置,并且期望的输出将驻留在m.Value
中。
这是一个演示
您需要从正则表达式中删除AT
。
试试'+CUSD: ('d+),"(.*?)"
new Regex("''+CUSD: (''d+),'"(.*?)'"", RegexOptions.Singleline);