+++ Warnung! Dieses Wiki ist voller Spoiler. Lesen nur auf eigene Gefahr! +++

Hilfe:Reguläre Ausdrücke

Aus KingWiki
Wechseln zu: Navigation, Suche

Das KingWiki ist inzwischen so groß geworden, dass manche Aufgaben nur mit sehr vielem manuellem Aufwand umgesetzt werden können. Das Verändern oder Löschen von Kategorien und Vorlagen, die Umbenennung von Artikeln und den Links darauf. Besonders dann, wenn der Titel der deutschen Übersetzung einer Geschichte vom Originaltitel abweicht, müssen alle Artikel, die darauf verweisen, angepasst werden. Das können mitunter mehrere hundert sein, die überprüft und geändert werden müssen. Zum Glück gibt es da eine Lösung für Administratoren mit Hilfe regulärer Ausdrücke.

Mit Hilfe einer Spezialseite können bestimmte Seiten, Seiten einer bestimmten Kategorie, Seiten die auf eine bestimmte Seite zeigen, oder Seiten, die mit einem bestimmten Präfix beginnen gleichzeitig auf diesen Ausdruck überprüft und angepasst werden.

Ganz simpel: Welche Ausdrücke haben welche Folgen

Suchen nach Ersetzen mit Kommentar
/(\[\[)Morality([^]]*\|*[^]]*\]\])/ $1Moral$2 Ersetzt Link auf Morality durch Link auf Moral


Schwachstelle: Bei gewollten englischen Links (auf englische Hörbücher (->Mile 81 (Hörbuch): Rezension)) würde der Link ebenfalls ersetzt werden.
Umgehbar durch /(\[\[)Mile 81(\|*\]\])/ , mögliche Folge also, alle Varianten der Links (Rezensionen, Inhalt, Charakter, Schauplätze, noch was?) separat listen, unter anderem mit
/(\[\[)Batman and Robin Have an Altercation: Inhaltsangabe(\|)Batman and Robin Have an Altercation/ oder
/(\[\[)Batman and Robin Have an Altercation: Inhaltsangabe(\|)/
Darauf achten, nicht nur die auf Hauptartikel verlinkten Artikel, sondern auch die auf 'Nebenseiten' (IA, Rez, Char, Orte)

/\{\{weiterführend Morality\}\}/ {{weiterführend Moral}} Analog zu oben; Ersetzt eingesetzte Vorlage durch eine andere.
/(\n;[ ]?''\[\[)([^]]*)(\]\]'')([\n]?:)/ $1$2$3 (-> [[$2/Schauplätze|Schauplätze]])\n: Ergänzung bei Schauplätzen (Kategorie:Orte); Zusätzlich zu Link auf Werk, Link auf Schauplatzliste des Werks
/^/ {{Portal/Basar der bösen Träume}}\n Setzt beliebigen Text, wie Vorlagen, an den Anfang des Artikels

Hinweis: Beim Durchführen ist darauf zu achten, dass jedes Mal die Vorlage an den Anfang des Artikels gesetzt wird. Lässt man das Ganze nochmal durchlaufen, muss man also in der Zeile davor dafür sorgen, dass die Vorlage gegebenenfalls zuerst aus dem Quelltext gelöscht wird, und in Zeile 2 erneut eingefügt. Außerdem darauf schauen, wo man es einfügt. Die Option Artikel einer Kategorie erscheinen bisher als beste Option, Links auf den Werkartikel ist zu breit.

Verschiedene Such- und Ersetzregeln können zeilenweise untereinander geschrieben werden, solange keine Leerzeile zwischen den Ausdrücken steht.

Warum sehe ich die Änderungen nicht unter Letzte Änderungen?

Unter den Optionen 'Bots einblenden' anklicken, dann klappt's.

Vorgehensweisen im Detail

Schauen wir uns mal ein paar Prozesse im Detail an. Denn nicht immer ist es mit den Massenänderungen allein getan.

Fall 1 - Änderung eines Links oder einer Vorlage

Die Ausgangssituation
Ein Artikel oder eine Vorlage wurde in der Vergangenheit angelegt und häufig verlinkt beziehungsweise eingebunden. Mittlerweile ist aber klar, dass dies nicht mehr passt. Das kann ganz unterschiedliche Gründe haben. Entweder, weil man sich auf eine andere Schreibweise geeinigt hat (Dunkler-Turm-Zyklus anstelle von Dunkler Turm Zyklus oder Dark-Tower-Zyklus), oder weil der Name der Vorlage nicht mehr zu ähnlichen passt ( {{Banner Florida}} im Vergleich zu {{Maine}}, {{Kalifornien}}, {{New York City}} ), oder aus anderen Gründen.
Wichtig ist, dass die manuelle Korrektur mehr Zeit in Anspruch nehmen würde, als das Überlegen der Regel für die regulären Ausdrücke, deren Anwendung und der Nachkontrolle.
Wie wir normalerweise vorgehen würden
Im Normalfall würde anhand der Spezialseite [[Spezial:Linkliste/Artikel- oder Vorlagenname]] jeder Artikel einzeln aufgerufen und bearbeitet werden. Wenn der bestehende Artikel als Weiterleitung bleiben soll (Bei den Werkstiteln beispielsweise, siehe weiter unten), kann im Anschluss der falsche Artikel oder die falsche Vorlage mit der Option mit Weiterleitung erstellen verschoben werden. Soll der Artikel nicht mehr bleiben - bei Vorlagen ist dies immer so - so geschieht die Verschiebung ohne Erstellung der Weiterleitung. Erst im Anschluss kann der falsche Artikel / die falsche Vorlage von einem Admin gelöscht werden.
Besonderheit hier: Diskussionsseiten sollten immer mit verschoben werden. Wenn eine existiert ist auch dort jeder Artikel manuell zu korrigieren, auch Diskussionsarchive.

Der Prozess in Kurzform

Die Überprüfung vor der Verschiebung des falschen Artikels oder der Vorlage bleibt noch immer bestehen. Allerdings geschieht die Änderung der Artikel deutlich schneller und im Normalfall auch zuverlässiger.

Folgende Schritte haben sich bewährt:

  1. Aufruf des 'Falschen Artikels' und Wechsel auf die Linkliste
  2. Von dort den Link auf Alle bearbeiten in einem neuen Tab oder neuen Fenster öffnen. Die Linkliste brauchen wir noch.
  3. In der Spezialseite den regulären Ausdruck/die Ausdrücke auswählen und zuerst Testen lassen
    1. Als Bearbeitungshinweis '[Bot]' der kurzen Erklärung der Änderung voranstellen, damit in der Versiongeschichte und bei den letzten Änderungen besser nachvollzogen werden kann, was passiert ist.
  4. Bei erfolgreichem Test die Änderungen durchführen lassen. Der Haken bei 'Im Browser ausführen' ist bei langsameren Servern hilfreich. Bei den aktuellen Einstellungen ist das aber hier nicht nötig.
  5. Nach der Auflistung der Änderung zurück in das Fenster/den Tab mit der Linkliste wechseln und aktualisieren. Je länger die Liste vorher war, desto länger dauert es, bis die Liste wirklich das zeigt, was geändert wurde. Wenn die Massenänderung erfolgreich war, sollte nach zwei bis drei Minuten keine Seite mehr auftauchen, die auf den falschen Artikel verlinkt.
  6. Der Artikel / Die Vorlage kann verschoben werden. Zu den Bedingen siehe oben. Nochmal in vereinfachter Entscheidungsbaumform:
    1. Ist das ganze eine Vorlage: die Option 'Weiterleitung erstellen' wird herausgenommen.
    2. Ist das ganze ein Artikel:
      1. Wird eine Weiterleitung gebraucht (Voller Name/Spitzname bei Charakteren, Originaltitel eines Werks): Option 'Weiterleitung erstellen' bleibt drin.
      2. sonst: Option 'Weiterleitung erstellen' abwählen

Das war's auch schon. An dieser Stelle sollte davon ausgegangen werden, dass der Umgang mit Spezialseiten und Verschieben Administratoren bekannt ist. Wenn sich aus den vergangenen Punkten Fragen ergeben, bitte zuerst Nachhaken bevor die Änderungen durchlaufen werden.

Die regulären Ausdrücke

Auch hier kommt es ganz darauf an, was getan werden soll. Die einfachste Form ist die Veränderung der Vorlage, obwohl auch hier Gefahren lauern können. Die schlimmste Situation für diesen Prozess ist ein Artikel mit Klammern und alternativer Anzeige - [[Bob (Baumeister)|Bob der Baumeister]]le. Aber auch das ist machbar. Wichtig bleiben Testlauf und Nachkontrolle, dann kann fast nichts schiefgehen.

Beginnen wir mit dem einfachen Fall.

Vorlagen

Bisher haben wir nur einfache Vorlagen ersetzt. Also solche in der Form von {{Vorlage}}. Im Endeffekt spielt es aber keine Rolle, ob dort Variablen mit drin sind, oder nicht. Man muss nur die Abfrage ein bisschen anders gestalten. Aber besser wir gucken uns die Beispiele an:

Regulärer Ausdruck Ersetzt durch Erklärung
/\{\{alte Vorlage\}\}/ {{neue Vorlage}} Der Algorithmus durchsucht alle Artikel nach der Zeichenkette {{alte Vorlage}}. Wenn diese genauso gefunden wurde, wird sie mit {{neue Vorlage}} im Quelltext ersetzt.
/\{\{\alte Vorlage[\n]?[\|]?/ {{neue Vorlage| Der Algorithmus durchsucht wieder die Artikel. Dieses Mal kann aber auch im Quelltext ein Zeilenumbruch vorkommen und/oder ein |, der Beginn und das deutliche Zeichen einer Variable. Hilfreich bei Vorlagen mit Variablen - {{alte Vorlage|OT=blubb|DT=blabb}}. Das heißt, alle Variablen bleiben bestehen und können demnach nach der Verschiebung so weiterbenutzt werden. Aber das Ganze ist noch nicht vorgekommen, muss also erstmal auf Funktionalität getestet werden.
/(\{\{)alte[ |_]Vorlage([\n]?[\|]?*\}\})/ $1neue Vorlage$2 Das ist ebenfalls noch nicht getestet. Aber, in etwa so sieht wahrscheinlich die vollständige Ersetzungslogik aus, die alles erschlägt. Gehen wir Stück für Stück mit der Erklärung durch:
  1. Es gibt Vorlagen, die wurden mit Unterstrichen anstelle von Leerzeichen in Artikel eingefügt. Das erkennt keine der oberen Logiken. Schlimmer noch: Die Wikimedia-Software macht beim Einbinden der Vorlagen keinen Unterschied zwischen Leerzeichen und Unterstrichen, weil es jedes Leerzeichen mit letzterem ersetzt. Wir sagen hier der Suchroutine, dass an der Stelle entweder ein Leerzeichen oder ein Unterstrich stehen darf. Ist für jedes potentielles Leerzeichen einzufügen.
  2. Dann geben wir die Logik vom oberen Fall dazu für den Fall, dass wir Variablen in der Vorlage haben und erweitern ein wenig um es zuverlässiger ersetzen zu können.

Wenn es so klappt wie in der Vorstellung dürfte der Algorithmus jetzt nur noch die gewollten Vorlagen ersetzen. Egal ob sie Variablen haben oder nicht.

Artikel

Bei Artikeln gibt es auch nur drei verschiedene Fälle und drei Level der Komplexität, wie oben erwähnt. Gehen wir sie anhand der Beispiele durch.

Regulärer Ausdruck Ersetzt durch Erklärung
/\[\[alter Artikel\]\]/ [[Neuer Artikel]] Bei einfachen Artikeln, wenn beispielsweise ein Rechtschreibfehler entstand. Ganz banal wird nach jedem Vorkommen von [[alter Artikel]] gesucht und ersetzt. Vorsicht bei Fällen, wo der Link vorher oder danach erweitert wird. Beispielsweise durch Besitz-s. Dort kann es sein, dass diese Ersetzung nicht ausreicht und stattdessen eine etwas erweiterte Variante notwendig ist
/\[\[alter Artikel\]\]/ [[Neuer Artikel|Alternativtext]] Ein wenig erweitertes Beispiel im Vergleich zu zuvor. Natürlich können wir solchen Links auch einen neuen Linktext mitgeben. Beispielsweise der Alte Artikel - oder, wenn wir aus [[Vorname]] [[Vorname (Geschichte)]] machen wollen, die richtige Schreibweise solcher Artikel: [[Vorname (Geschichte)|Vorname]]. Die Variante ist auch für die Fälle hilfreich, in denen der Text nach dem Wikilink noch erweitert wird.
/(\[\[)alter Artikel([^]]*\|*[^]]*\]\])/ $1neuer Artikel$2 Die eierlegende Wollmilchsau, vor allem für die Umsetzung von Originaltitel zu deutscher Übersetzung von Werken bisher. Werke werden bei uns inzwischen durch Inhaltsangaben, Rezensionen, Charakter- und Schauplatzlisten erweitert. Das bedeutet, jeder Link [[Kurzgeschichte]] zieht auch ein [[Kurzgeschichte/Charaktere]], u.ä. nach sich. Das heißt, unser Suchalgorithmus muss auch die Fälle finden, die nach dem alten Artikelnamen noch Extras enthalten können ([^]]*). Außerdem kann dieser Teil der komplette Link sein, muss aber nicht. Gerade die Listen werden meistens als Charaktere oder Schauplätze angezeigt. Das bedeutet, die Pipe '|' kann ebenfalls vorkommen, muss aber nicht (|*). Das gleiche für Textzeichen danach. ([^]]*) Auch hier die Vorgabe, dass es beliebig viele sein können, oder aber gar keine.

Besonderheiten durch Unterstriche sind zum Glück bisher nicht vorgekommen. Verlinkungen sind immer ohne angelegt - bisher.

Auch hier gilt: Testen, nachkontrollieren, nachjustieren, nochmal testen. Hilfreich ist es, mit Hilfe der Optionen der Artikelauswahl nur eine oder vereinzelte Artikel durchlaufen zu lassen. Die Vorschau der 20 ersten Artikel hilft mitunter nicht, wenn die Änderung in einer Vorlage geschehen soll, die in extrem vielen Artikeln verwendet wird und demnach nicht unter dem Test auffällt.

Mehr Details weiter unten im Prozess der Änderungen bei den deutschen Titeln.

Fall 2 - Einfügen eines Portalhinweises

Die Ausgangssituation

Wir haben viele Artikel zu einem Roman oder einer Sammlung angelegt und einigen uns darauf, ein Portal zu erstellen. Wie bei jedem Portal, wird darauf in allen Artikeln hingewiesen, die damit verbunden sind. Das bedeutet, dass mitunter mehrere Hundert Artikel im Nachhinein bearbeitet werden müssen.

Wie machen wir es bisher

Das scheint von Autor zu Autor unterschiedlich zu sein. Eine Variante ist es, anhand der entsprechenden Kategorie des Werkes oder der Sammlung jeden Artikel aufzurufen und zu editieren. Der andere Weg führt über die Spezialseite Links auf diese Seite ausgehend von der entsprechenden weiterführend-Vorlage. Gerade die zweite Option ist aber bei Sammlungen eher hinderlich, da jede einzelne Geschichte eine individuelle Vorlage hat.

Die Arbeit mit den Massenänderungen

Der Weg über die Kategorie erscheint bislang die beste Variante zu sein. Umso wichtiger ist es, die Kategorien richtig und vollständig in die Artikel einzutragen. Auf diesem Weg kann man die Option "Alle bearbeiten" auf der entsprechenden Kategorie auswählen.

Der Reguläre Ausdruck ist relativ einfach. Noch einfacher, wenn man zum ersten Mal die Portalhinweise einpflegen will.

Regulärer Ausdruck Ersetzt durch Erklärung
/^/ {{Portal/Portalhinweis}}\n An jeden Quelltextbeginn wird die Vorlage geschrieben
/\{\{Portal/Portalhinweis\}\}/
/^/
leere Zeile
{{Portal/Portalhinweis}}\n
Die Variante wird verwendet, wenn wir nicht sicher sind, ob nicht einzelne Artikel in der Kategorie schon den Portalhinweis haben. Sonst würde dieser nämlich doppelt auftauchen. Also sucht der Algorithmus zuerst nach dem Hinweis und löscht ihn. Wichtig ist hier, auf der Ersetzt durch eine Leerzeile einzutragen. Ebenso wichtig: Nach jeder Vorschau ist diese Leerzeile auf Grund eines Bugs der Wiki-Erweiterung wieder weg und muss neu hinzugefügt werden. Die zweite Zeile sorgt dann - wie gehabt - für den Eintrag des Portalhinweises an erster Stelle des Quelltexts.

Auch hier ist das Testen mit Einzelartikeln hilfreich. Gerade die Fälle, in denen wir schon Portalhinweise haben.

Fall 3 - Veröffentlichung des deutschen Titels

Hauptartikel Hilfe:Veröffentlichungen deutscher Titel
V E Alle Hilfe-Artikel auf einem Blick
Portal:Hilfe