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.


Anmelden zum Antworten