Pomoże ktoś, tak proste że chyba wstyd o to pytać? A ja już 2 dni siedzę i próbuję coś z tym zrobić.
pattern = r'[FLTSIM.(.?)][\s\S]?title\s?=\s?"(.?)"[\s\S]?texture\s?=\s?"(.*?)"'
Pattern powyżej, pobiera wartości umieszczone w cudzysłowach dla tile i texture. No i to działa.
Co należało by w nim zmienić, by rozpoznawał też wartości, które nie są ograniczone cudzysłowami. Tak jak w przypadku sekcji [fltsim.1] UWAGA: zamiast spacji wstawiłem kropki, bo po zatwierdzeniu komentarza widzę, że puste spacje są tutaj wycinane.
Pod fltsim.1 widzimy, że dodatkowym utrudnieniem, może być
- w wartości mogą się znaleźć spacje
- nieistotny opis występujący po średniku. Też z różną ilością lub nawet brakiem spacji.
- jakieś nieistne białe znaki, mogące utrudnić wyodrębnienie wartości.
- wszędzie ilość spacji może być różna, chociaż przyjmijmy raczej, że początkowe 'tile =' 'texture =' zawsze wyglądają właśnie tak.
[FLTSIM.0]
title = "Mig-15"
texture = ""
[FLTSIM.1]
title = Mig-15 Corea War ......................;........Variation name
texture = .....................Corea ;texture folder
Pomożecie. Nie znam się na programowaniu, choć kiedyś 20-30l. temu jako młody trochę się tym interesowałem. Przez 2 dni nie udało mi się poprawić by zawsze odpowiednio działało. Ostatnia moja próba to:
pattern = r'[FLTSIM.(.?)][\s\S]?(?:title|texture)\s=\s(.?)\s?(?:;|$)'
Skrypt z tym patternem był napisany by umożliwić kasowanie niepotrzebnych malowań z dodatków do Microsoft Flight Simulator, ale właśnie nie działa odpowiednio z niektórymi plikami aircraft.cfg
W załączniku, jeśli komuś się przyda jest cały skrypt