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

问题描述:

我目前正在研究Mac上的Qt C++应用程序。 在整个应用程序中,我使用的字符串模式匹配非常频繁。 使用QRegExp类时,我一直遇到一些我只是不明白的东西!!!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

的问题是,|限制,以搜索任何MF\dS\d\d.C\d\d。所以物品的瑕疵将会匹配。

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

+1

'[MF] ...'是写这个字符类的正确方法。否则,文字'|'也将在这个位置匹配。 –

+0

非常感谢!奇迹般有效 !! – guitarflow

+0

@Tim Pietzcker没有想到...更新了陈述 –