(\w+) *=((.*?)(;|\n))|(\".*?\")
Na tej stronie do testowania pięknie mi wykrywa.
Ale ogólnie to ja niewiele rozumiem co do mnie piszesz, nawet raczej ze wskazaniem, że nic nie rozumiem. A po prawie 3 dniach nad tamtym patternem i ciągłego poznawania umysłu AI ChatGpt i uczenia się odpowiednich z nim interakcji to jestem wykończony.
Pozwoliłem sobie przeredagować to co napisałeś i mu to zamieściłem:
ad.:
pattern = r'[FLTSIM.(.?)][\s\S]?title\s*?=\s*?"(.?)"[\s\S]?texture\s*?=\s*?"(.*?)"'
Nie wiem, czy jest sens analizować to jednym regexpem.
[FLTSIM.0]
title = "Mig-15"
texture = ""
[FLTSIM.1]
title = Mig-15 Corea War ; Variation name
texture = Corea;texture folder
jeśli chcesz to regexpami zrobić, to łatwiej będzie iterować linijka po linijce, i w każdej linijce testować kilka regexpów (osobny do łapania [fltsim.X], osobny do łapania title i texture itp.).
Np. coś takiego można by zastosować do łapania deklaracji ze znakiem równa się:
(\w+) =((.?)(;|\n))|(" *?")
W każdym razie możesz lecieć linijka po linijce i testować. I nie używać zmiennej, która odpowiada za aktualną sekcję. I jak wykryjesz coś w nawiasach kwadratowych np. [FLTSIM.0], to możesz przypisać do zmiennej, że aktualna sekcja to "FLTSIM.0". I to może być potem klucz w słowniku.
Potem możesz wyłapywać kolejne sekcje klucz = wartość (np. waśnie tym: (\w+) =((.?)(;|\n))|(".*?")
czy podobnym regexpem), i przypisywać do kolejnego słownika wartości (słownik wielopoziomowy) np.
values[section][key] = value
gdzie key i value to wykryty z pliku klucz i wartość np. "title", "Mig-15", section to wykryta sekcja np. "FLTSIM.1".
Rozumiesz to co napisałem wyżej, możesz zmienić poniższy skrypt tak skrypt by wzięte było to pod uwagę?
.................................................................................
I wypluł mi skrypt, który zamieściłem w załączniku. Jednak po uruchomieniu skrypt nie wyświetla, żadnego ze specjalnie spreparowanych pod AI malowań. Próby naprawy, nie pomogły.
Nie dałbyś rady w wolnym czasie, zobaczyć co on z tego zrobił? Niekoniecznie dzisiaj, niekoniecznie jutro. Ja sam mam też trochę dość. Wiem, że nie łatwo tak, bo ciężko czyjeś kody przeglądać i to nie będąc w temacie. Aha, w tych sekcjach dałem kropki zamiast spacji, bo tutaj po zamieszczeniu komentarza puste spacje są wycinane. Ale to chyba i tak nie ma znaczenia
A skrypt i kompilację zamieszczam, jak wyżej pisałem na stronie fsim.to wraz z krótkim opisem i użytkownicy ściągają sobie zipa. Miało być tylko dla mnie, wyszło całkiem nieźle już po 10 minutach współpracy z AI. Skrypt wyświetla podgląd-obrazek wybieranego do skasowania malowania. I zamieściłem, ale jakiegoś specjalnego powodzenia nie programik nie ma. Co jest nawet ciekawe, bo każde z malowań może zajmować 2-3GB, malowań może być nawet kilkanaście. Ręcznie malowania usunąć można ale jest to kłopotliwe, bo trzeba zmieniać w pliku konfiguracyjnym numerację wszystkich następujących po nim malowań. A gdy pojawi się updejt samolotu trzeba wszystko powtarzać. Symulator wraz z dodatkami zajmuje mi blisko 4GB na SSD, a oprócz tego używam symbolic linka i około 2GB niektórego typu danych poszło na HDD.
Link bezpośredni do tego skryptu na tamtej stronie, chociaż nie wiem czy tutaj mogę dawać linki: https://pl.flightsim.to/file/71800/liveries-deleter
Chętnie tam wspomnę o pomocy od ciebie :) i o tym forum.
del2forum.zip[del2forum.zip]