3

現在、Mac で Qt C++ アプリケーションに取り組んでいます。アプリケーション全体で、文字列パターン マッチングをかなり頻繁に使用しています。QRegExp クラスを使用していると、理解できない問題が発生し続けます!!!

私の QRegExp は次のようになります。

QRegExp regEx("M|F\\dS\\d\\d.C\\d\\d", Qt::CaseInsensitive);

ファイル名の「M1S02.C12」や「F4S14.C01」などのパターンに一致するはずです。これは、一致する必要がある入力ファイル名にこのパターンの部分が含まれていないとすぐにうまく機能します。

例:私の入力ファイルは「testItem_abcd_M1S03.C02_grade3」という名前です

regEx.exactMatch("testItem_abcd_M1S03.C02_grade3");

false を返しますが、

regEx.indexIn("testItem_abcd_M1S03.C02_grade3");

"item" 内の "m" の位置である 7 を返します。

正しく一致させるために何をする必要があるか、誰か教えてもらえますか?

前もってありがとう、ギターフロー

4

1 に答える 1

3

問題は、またはのいずれかの|検索に制限があることです。したがって、アイテムの単一のmが一致します。MF\dS\d\d.C\d\d

"[MF]\\dS\\d\\d\\.C\\d\\d"代わりに試してください。
(注:単一のドットは任意の文字と一致するため、も置き換え.られます)\\.

于 2011-11-04T10:57:26.817 に答える