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");

返回假,而

regEx.indexIn("testItem_abcd_M1S03.C02_grade3");

返回 7,即“m”在“item”中的位置。

有人可以告诉我,我需要做什么才能使它匹配吗?

在此先感谢,吉他流

4

1 回答 1

3

问题是|限制搜索Mor F\dS\d\d.C\d\d。所以 item 的单 m 将匹配。

试试"[MF]\\dS\\d\\d\\.C\\d\\d"吧。
(注意:也替换.\\., 因为单个点匹配任何字符)

于 2011-11-04T10:57:26.817 回答