我正在使用gsm调制解调器,我想解析命令响应。我想用正则表达式来实现它。所以我有以下文字:
1.AT+CMGF=0
2.
3.OK
4.AT+CMGF=1
5.
6.OK
7.AT+ji
8.
9.ERROR
10.AT+CPMS="ME","ME","ME"
11.
12.+CPMS: 50,100,50,100,50,100
13.
14.OK
15.AT+CMGL="ALL"
16.
17.+CMGL: 0,"REC READ","+7914xxxxxxx",,"12/11/27,12:27:00+44"
18.04DEC0777E03001281 1892
19.+CMGL: 1,"REC READ","+7924xxxxxxx",,"12/11/27,12:33:51+44"
20.04DEC0742E00200176 646411 17983
21.+CMGL: 6,"REC READ","+7924xxxxxxx",,"12/11/27,13:28:00+44"
22.ERROR
23.+CMGL: 7,"REC READ","+79098088xxx",,"12/11/27,12:40:16+44"
24.OK
25.
26.+CMGL: 49,"REC READ","+7924xxxxxxx",,"12/11/27,14:01:01+44"
27.010104480150014300 127051 0020640
28.
29.OK
我需要在每次操作后捕获ERROR
和OK
,并将其从邮件中排除,以防有人发送邮件。我接下来试过了:
(\r\n)(OK|ERROR)|^("\r\n(OK|ERROR))
但它不起作用。换句话说,我需要排除第22行,第24行并获取其余的OK
和ERROR
行。
请帮忙。
答案 0 :(得分:0)
您的问题有点难以理解。如果您只需要从字符串中删除OK和ERROR消息,则应该使用简单的String.Replace()函数。但是如果你想获取换行符并返回字符,你可以使用以下正则表达式并用空字符串替换。
\r\n(?:OK|ERROR)
但这将取代所有OK和ERROR消息,而不仅仅是第22和24行的消息。
我假设行号仅用于演示目的,而不是您尝试清理的实际字符串的一部分。如果它们是字符串的一部分,则正则表达式必须是这样的:
\r\n\d+\.(?:OK|ERROR)