0

厳密にフォーマットされた文字列からファイルタイプを取得するための正規表現を作成しようとしています。フォーマットはの線に沿っています

"Image formats (*.png *.jpg *.bmp)"

私の最初の理論は、「*」、「。」で始まる文字列を検索することでした。次に、などのスペースまたは丸かっこが見つかるまで、任意の文字を照合(およびキャプチャ)します。

QRegExp re("\\*\\.(.*)[\\s|\\)]")

これは私に次のことを与えます(最小限の有効化で)

"*.png""png"

私も\w(単語文字)を使ってみましたが、うまくいきませんでした。正規表現エンジンはperl構文を使用し、c ++もバックスラッシュを処理するため、バックスラッシュも「エスケープ」する必要があります。

質問:

厳密にフォーマットされた文字列からファイルタイプを検索するには、正規表現が必要です。つまり、上記の文字列から、「png」、「jpg」、「bmp」の3つの文字列が必要になります。

提案を事前に感謝します!

4

1 に答える 1

2
QString str = "Image formats (*.png *.jpg *.bmp)";
QRegExp re("([*][.](.*))[\\s|\\)]"); // "(\\*\\.(.*))[\\s|\\)]" - also works
re.setMinimal(true);

int pos = 0;
while ((pos = re.indexIn(str, pos)) != -1)
{
    qDebug() << re.cap(1) << re.cap(2);
    pos += re.matchedLength();
}

出力:

"*.png" "png"
"*.jpg" "jpg"
"*.bmp" "bmp"
于 2013-01-30T11:40:57.987 に答える