我想匹配所有具有擴展名的文件.nef
- 匹配必須不區分大小寫。如何創建不區分大小寫的正則表達式來匹配文件擴展名?
regex e("(.*)(\\.NEF)",ECMAScript|icase);
...
if (regex_match (fn1, e)){
//Do Something
}
這裏fn1
是一個帶有文件名的字符串。
但是,這隻對.NEF
(大寫)擴展名的文件「有所作爲」。 .nef
擴展名被忽略。
我也嘗試 -
regex e("(.*)(\\.[Nn][Ee][Ff])");
和
regex e("(.*)(\\.[N|n][E|e][F|f])");
這兩者導致運行時錯誤。
g++ nefread.cpp -o nefread -lraw_r -lpthread -pthread -std=c++11 -O3
我在做什麼錯 -
terminate called after throwing an instance of 'std::regex_error' what(): regex_error Aborted (core dumped)
我的代碼是用匯編?這是我的基本代碼。我想擴展它以匹配更多的文件擴展名.nef
,.raw
,.cr2
,
這個例外可能不會有什麼,與你的正則表達式的字符串,但它是因爲你使用gcc的正則表達式的實現,這是壞了。海灣合作委員會將在4.9版中發佈工作'' –
Praetorian
爲什麼你會嘗試匹配「。」與「\\。」?它不應該是「\」嗎? –
@Praetorian - 哦!所以這些http://cpprocks.com/wp-content/uploads/c++11-regex-cheatsheet.pdf中的一些不起作用? –