Regulärer Ausdruck
-
Hallo, kann mir jemand mit meinem Regulären Ausdruck helfen? Ich möchte aus einer Datei die Zeilen auslesen in folgendem Format "c:\pfad\datei.mp3". Allerdings funktioniert die if abfrage nicht. die ArrayList wird nicht gefüllt. Woran könnte das liegen?
StreamReader ^objReader = gcnew StreamReader("c:\\temp.m3u"); String ^sLine = ""; ArrayList ^arrText = gcnew ArrayList(); Regex^ rx = gcnew Regex("^([a-zA-Z]:(\\)*((\w)*(\\)*)*(\w)+(\.mp3))$"); sLine = objReader->ReadLine(); while (sLine != nullptr) { //MessageBox::Show(sLine); if (rx->IsMatch(sLine)) { arrText->Add(sLine); } sLine = objReader->ReadLine(); } objReader->Close();
File:
-----------
#EXTM3U
#EXTINF:261,Afrob - Nicht Mit Mir Feat Dean D Dawson
C:\Alben\Afrob - Hammer\06-nicht_mit_mir_feat_dean_d_dawson-daw.mp3
#EXTINF:256,Afrob - German & Yardie Feat Light of Da Bushbabees
C:\Alben\Afrob - Hammer\08-german_and_yardie_feat_light_of_da_bushbabees-daw.mp3
#EXTINF:161,Afrob - Ohne Uns Geht Es Nicht Feat Samy Deluxe
-----------Vielen Dank schon mal,
Soda
-
Es liegt vermutlich an den Leerzeichen im Pfad...
Sowas ist vermutlich besser:^[a-zA-Z]:(\[^\]+)*\\(([^\])+\.mp3)$
-
Versuchs mal hiermit:
int main(array<System::String ^> ^args) { Regex^ rx = gcnew Regex("^[a-zA-Z]:\\\\.*?\\.mp3$"); System::String ^ t = gcnew System::String("C:\\Alben\\ \\Afrob - Hammer\\06-nicht_mit_mir_feat_dean_d_dawson-daw.mp3x"); if(rx->IsMatch(t)) System::Windows::Forms::MessageBox::Show("Ja"); return 0; }
-
Vielen Dank, mit dem letzten Ausdruck klappt es. Ich hab ihn noch auf die Groß- und Kleinschreibung angepasst "^[a-zA-Z]:\\\.*?\.(?i)(mp3)$".
Nochmals vielen Dank,
Soda.