Szerkesztővita:FoBe
Legutóbb hozzászólt Porrima 20 nappal ezelőtt a(z) Filmkatalógus sablonok törlése témában

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)
- 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)
- 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)