Utilizzando std :: regex e dato un percorso di file, voglio abbinare solo i nomi di file che terminano con .txt
e che non sono del modulo _test.txt
o .txtTEMP
. Qualsiasi altro carattere di sottolineatura va bene.Regex per abbinare solo alcuni nomi di file
Così, ad esempio:
somepath/testFile.txt
deve corrispondere.somepath/test_File.txt
deve corrispondere.somepath/testFile_test.txt
non corrisponde.somepath/testFile.txtTEMP
non corrisponde.
Qual è il regex corretto per un tale modello?
Quello che ho cercato:
(.*?)(\.txt)
---> Questo corrisponde a qualsiasi percorso di file termina con .txt
.
per escludere i file che contiene _test
ho cercato di usare lookahed negativo:
(.*?)(?!_test)(\.txt)
Ma non ha funzionato.
Ho anche provato lookbehind negativo ma MSVC14 (Visual Studio 2015) genera un'eccezione std::regex_error
durante la creazione dell'espressione regolare, quindi non sono sicuro se non è supportato o sto utilizzando la sintassi errata.
Grazie, funziona. – Banex
È possibile escludere selettivamente solo i nomi '* _test.txt'? – dlask
@dlask Con "selettivamente" intendi ignorare il 'TEMP' alla fine? Temo che possa succedere che non ci sia '_test' ma un' TEMP'. – Banex