2014-09-22 39 views
2

我一直在尋找幾天,我似乎無法找到有關如何在C中使用fnmatch執行此操作的信息。在C中找不到正確的Fnmatch模式(不包括兩位數字)

我試圖做一個匹配模式:xxxx00_xxx(x是任何字符,00是除02以外的任何數字)。

到目前爲止,我所得到的是:???? [0-9] [!2] _ ???
正如您所看到的,問題在於它排除以2結尾的任何數字(12,22等)。但我對除02之外的所有數字感興趣。

在此先感謝您提供的任何幫助。

+0

@AvinashRaj:修復了標記。這應該有助於避免一些非答案。 – 2014-09-22 19:21:48

+0

對不起,我想這不是一個真正的RegExp問題,謝謝你改變它。 – newsmail 2014-09-22 19:35:21

回答

0

爲了解決這個問題fnmatch模式,則需要兩個獨立的模式,例如:

????[!0]?_??? 
????0[!2]_??? 

我選擇這避免匹配兩個模式的任何字符串的可能性,所以,如果你正在做一個列表的匹配(例如,使用glob函數),您應該可以只連接您的列表。

+0

那麼,在一種模式下真的沒有辦法做到這一點?這太糟糕了,我想我必須檢查glob函數。感謝你的回答! – newsmail 2014-09-22 19:34:40

+0

如果你想用一種模式來完成,你需要使用正則表達式。無論如何,如果你反覆使用相同的模式來匹配不同的字符串,正則表達式通常會更加高效。 – 2014-09-22 20:04:47

+0

這也是一個選項,我真的不知道C中有一個正則表達式庫,但我會嘗試。再次感謝! – newsmail 2014-09-22 20:28:47

相關問題