3

Qt5.6を使用しています。

受信データをシリアル ポートで処理する必要があります。データは「AD=+172345AD=+272345」などの形式になります。着信データを a に追加し、QString正規表現を使用して小数を抽出します。

正規表現を書くと:

int tmp = StrData.indexOf(QRegularExpression("AD=\+[0-9]{6}"))

一致しません。つまり、tmp は常に -1 です。しかし、ここで正規表現をテストしたところ、有効であることがわかりました。問題は何ですか?

4

1 に答える 1

4

ドキュメントに従って、内部で正規表現を使用して、文字列内の正規表現の最初の一致のインデックス位置QString.indexOfを取得できます。re

正規表現の唯一の問題は、Qt では文字列が C スタイルであることです。つまり、エスケープ シーケンスを含めることができます。したがって、正規表現の特殊文字をエスケープするバックスラッシュは 2 倍にする必要があります。

使用する

QRegularExpression("AD=\\+[0-9]{6}")

また

QRegularExpression("AD=[+][0-9]{6}")

内部[...]であるため、+はリテラル文字として扱われます。

于 2016-04-13T14:47:34.847 に答える