我目前正在使用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
答案 0 :(得分:3)
问题在于|
限制搜索M
或F\dS\d\d.C\d\d
。因此,项目的sinle m将匹配。
请尝试"[MF]\\dS\\d\\d\\.C\\d\\d"
(注意:还将.
替换为\\.
,因为单个点匹配任何字符)