0

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 行目を除外し、残りOKERROR行を取得する必要があります。助けてください。

4

1 に答える 1

0

あなたの質問は少し理解しにくいです。文字列からOKメッセージとERRORメッセージを削除するだけでよい場合は、単純なString.Replace()関数で十分です。ただし、改行を取得して文字を返す場合は、次の正規表現を使用して空の文字列に置き換えることができます。

\r\n(?:OK|ERROR)

ただし、これにより、22行目と24行目のメッセージだけでなく、すべてのOKメッセージとERRORメッセージが置き換えられます。

行番号は表示目的でのみ存在し、クリーンアップしようとしている実際の文字列の一部ではないと想定しています。それらが文字列の一部である場合、正規表現は次のようになる必要があります。

\r\n\d+\.(?:OK|ERROR)
于 2012-12-01T23:53:20.873 に答える