Filmkatalógus sablonok törlése Szerkesztés

Szia FoBe!

Én is szoktam botozni, erre a témára is szívesen rámozdultam volna, de a Regexpben sajnos nem vagyok otthon. Szívesen tanulok, és nem szégyenlek kérdezni az okosabbtól: elárulnád, hogyan csináltad? – Porrimaeszmecsere 2023. szeptember 6., 22:53 (CEST)Válasz[válasz]

Szia Porrima! A cserét Pywikibottal csináltam, a következő parancsot futtattam:
python3 pwb.py replace "\* {{[Ff]ilmkatalógus.hu\|[^}]*}}\n" "" -regex -file:t.txt -summary:"Bot: törölt sablon eltávolítása"
Ebből a replace a Pywikibot replace moduljának meghívása (vigyázat, a magyar leírás elavult szintaxist használ, a friss verzió itt van). A következő két paraméter a cserélendő szöveg illetve hogy mire legyen lecserélve (esetünkben ez üres, mert ugye törölni kellett a sablont). A -regex flag azt jelzi, hogy ezek reguláris kifejezések. A -file flag adja meg, hogy a bot milyen listából dolgozik: ebben az esetben a sablont beillesztő lapok listáját kimásoltam a Speciális:Mi hivatkozik erre lapról, és beillesztettem a t.txt szövegfájlba. Végül a -summary a használandó szerkesztési összefoglalót adja meg.
A használt reguláris kifejezést a következőképpen építettem fel. Úgy láttam, hogy a törölt sablont elsősorban a További információk szakaszban használták, felsorolás részeként, ezért az olyan előfordulásokat akartam elcsípni, amik
* {{Filmkatalógus.hu|paraméter|esetleges további paraméterek}} + sortörés
alakúak. A csillag a reguláris kifejezésben speciális karakter, ezért elé kell tenni egy repjelet: \* Az [Ff] rész azt jelenti, hogy az első betű a nagy vagy kis f bármelyike lehet. A függőleges vonal után következő [^}] bármilyen olyan karakter lehet, ami nem záró kapcsos zárójel, az ezt követő csillag pedig azt jelenti, hogy ez akárhányszor ismétlődhet: a [^}]* kifejezés tehát magában foglalja az első függőleges vonal és a sablon vége közti összes paramétert. A kifejezés végén a \n az új sort jelöli.
Látható, hogy elfelejtettem arra is figyelni, hogy a felsorolásjel után egyesek nem tesznek szóközt; szerencsére szinte minden előfordulás ilyen volt. Egy fokkal okosabb lett volna a "\* *{{[Ff]ilmkatalógus.hu\|[^}]*}}\n": ekkor a * kifejezés bárhány (akár nulla) szóközre passzolt volna.
A reguláris kifejezések tervezésére és gyakorlására számos weboldal létezik: itt például felülre beírod a regexet, alulra a szöveget, és rögtön látod, hogy a kifejezés a szöveg melyik részére illeszkedik.
Remélem, tudtam segíteni. FoBe üzenet 2023. szeptember 7., 10:20 (CEST)Válasz[válasz]
Nagyon szépen köszönöm a részletes magyarázatot, talán egyszer még hasznát veszem. – Porrimaeszmecsere 2023. szeptember 7., 10:58 (CEST)Válasz[válasz]