2011-11-04 214 views
3

我目前正在研究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

回答

3

的問題是,|限制,以搜索任何MF\dS\d\d.C\d\d。所以物品的瑕疵將會匹配。

嘗試"[MF]\\dS\\d\\d\\.C\\d\\d"
(注意:也可用.替換爲\\.,因爲單個點匹配任何字符)

+1

'[MF] ...'是寫這個字符類的正確方法。否則,文字'|'也將在這個位置匹配。 –

+0

非常感謝!奇蹟般有效 !! – guitarflow

+0

@Tim Pietzcker沒有想到...更新了陳述 –

相關問題