String
TCP/IPソケットを介して入ってくる示されている打撃の正規表現を作成しようとしています。
$AVSYS,99999999,V1.17,SN0000103,32768*16
$
各文字列は、5〜6桁のドル記号と大文字の英字で始まる必要があります。それらは*
、2桁の英数字のチェックサムで終わります。各フィールドはコンマで区切られ,
、任意の文字列にすることができます。
そのための正規表現を作成しました。
^\$[A-Z]{5,6}(\,.*)(\,.*)(\,.*)(\,.*)(\,.*)\*[\d\w]{2}$
一致すると思っていましたが、一致しませんでした。Java docを読んだのに、まだ正規表現に慣れていません。正しい正規表現を取得するために私を助けてください。
編集済み
返信に従って正規表現を修正した後、これら2つを試しました。
^\$[A-Z]{5,6}(\,.*)(\,.*)(\,.*)(\,.*)(\,.*)\*[\d\w]{2}$
^\$[A-Z]{5,6}(\,.*?)(\,.*?)(\,.*?)(\,.*?)\*[\d\w]{2}$
しかし、予想以上の結果が得られました。
$AVSYS,99999999,V1.17,SN0000103,32768*16
$AVRMC,80000551,144811,A,4351.3789,N,07923.4712,W,0.00,153.45,091107,A,,161,1*64
$AVRMC,80000551,144811,A,4351.3789,N,07923.4712,W,0.00,153.45,091107,A,,161,1,0,0*64
$EAVSYS,99999999,12345678901234567890,9057621228,,,*0B
上記の文はすべて正規表現と一致しますが、1)だけを取得したいと思います。どうすればこれを達成できますか?