QRegExp只是不匹配!请告诉我我做错了什么

时间:2011-11-04 10:48:04

标签: c++ regex qt pattern-matching qregexp

我目前正在使用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");

返回7,这是“项目”中“m”的位置。

有人可以告诉我,我需要做些什么才能让它与之匹配?

提前致谢, guitarflow

1 个答案:

答案 0 :(得分:3)

问题在于|限制搜索MF\dS\d\d.C\d\d。因此,项目的sinle m将匹配。

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