Reguläre Ausdrücke werden in TPF2 verwendet, um eigene Label-Filter zu erstellen.
Hier eine Übersicht, welche Zeichen was bedeuten:
1 Übersicht Ausdrücke
[table]
[tr]
[td]Zeichen[/td]
[td]Funktion / Beschreibung[/td]
[td]Beispiel[/td]
[/tr]
[tr]
[td][tt].[/tt][/td]
[td]genau [i][b]ein [/b][/i]beliebiges Zeichen[/td]
[td][/td]
[/tr]
[tr]
[td][tt]-[/tt][/td]
[td]für Bereichsangaben
Ist das Minus-Zeichen direkt gemeint und steht nicht am Anfang einer regexp muss ein \ vorangestellt werden: \-[/td]
[td][A-Z][/td]
[/tr]
[tr]
[td][tt]\[/tt][/td]
[td]Hebt die (Meta-)Funktion eines Zeichens auf[/td]
[td]\.
\-[/td]
[/tr]
[tr]
[td][tt]^[/tt][/td]
[td]Anfang einer Zeichenkette
in [ ] negiert es die Aussage: [^a-z] = keine Kleinbuchstaben[/td]
[td]^a
[^a-z][/td]
[/tr]
[tr]
[td][tt]$[/tt][/td]
[td]Ende einer Zeichenkette[/td]
[td]$a[/td]
[/tr]
[tr]
[td][tt]|[/tt][/td]
[td]Alternativen[/td]
[td][a-z]|[0-9][/td]
[/tr]
[tr]
[td][tt]+[/tt][/td]
[td]Zeichen vor dem Plus muss mindestens einmal bis beliebig oft vorkommen[/td]
[td]a+[/td]
[/tr]
[tr]
[td][tt]*[/tt][/td]
[td]Zeichen vor dem Sternchen kann 0 mal bis beliebig oft vorkommen[/td]
[td]a*[/td]
[/tr]
[tr]
[td][tt]?[/tt][/td]
[td]Zeichen vor dem ? muss 0 bis 1 mal vorkommen[/td]
[td]a?[/td]
[/tr]
[tr]
[td][tt]{min,max}[/tt]
[tt]{anzahl}[/tt][/td]
[td]Häufigkeit von [i]min [/i]bis [i]max[/i]: {1,3} = 1-3 mal
bzw. genaue Anzahl: {2} = muss genau 2 mal vorkommen[/td]
[td]\d{1,3}
\d{2}[/td]
[/tr]
[tr]
[td][tt][ ][/tt][/td]
[td]genau ein Zeichen, was zw. den Klammern steht
[abc] sucht also nach a, b oder c, nicht nach abc[/td]
[td][A-Z][/td]
[/tr]
[tr]
[td][tt]( )[/tt][/td]
[td]Klammern zum Zusammenfassen eines Ausdrucks (wie in der Mathematik): ^(abc)|(xyz) = abc oder xyz am Anfang einer Zeichenkette[/td]
[td]^(abc)|(xyz)[/td]
[/tr]
[tr]
[td][tt]\d[/tt][/td]
[td]genau eine Ziffer [0-9] (d wie Digit)[/td]
[td]\d[/td]
[/tr]
[tr]
[td][tt]\D[/tt][/td]
[td]ein Zeichen, das keine Ziffer ist, also [^\d][/td]
[td]\D[/td]
[/tr]
[tr]
[td][tt]\w[/tt][/td]
[td]genau ein Buchstabe, eine Ziffer oder der Unterstrich, also [a-zA-Z_0-9]
[i](und evtl. weitere Buchstaben, z. B. Umlaute)[/i][/td]
[td]\w[/td]
[/tr]
[tr]
[td][tt]\W[/tt][/td]
[td]ein Zeichen, das weder Buchstabe noch Zahl noch Unterstrich ist, also [^\w][/td]
[td]\W[/td]
[/tr]
[tr]
[td][tt][/tt][/td]
[td]Whitespace; meistens die Klasse der Steuerzeichen \f, \n, \r, \t und \v[/td]
[td]\s[/td]
[/tr]
[tr]
[td][tt]\S[/tt][/td]
[td]ein Zeichen, das kein Whitespace ist [^\s][/td]
[td]\S[/td]
[/tr]
[tr]
[td][tt]\b[/tt][/td]
[td]leere Zeichenkette am Wortanfang oder am Wortende (erkennt Anfang eines Wortes)[/td]
[td]\b[/td]
[/tr]
[tr]
[td][tt]\B[/tt][/td]
[td]leere Zeichenkette, die nicht den Anfang oder das Ende eines Wortes bildet[/td]
[td]\B[/td]
[/tr]
[tr]
[td][tt]\[/tt][/td]
[td]leere Zeichenkette am Wortende[/td]
[td]\>[/td]
[/tr]
[/table]
2 Beispiele
2.1 Erweiterte Liniennummernanzeige
Folgender Code erlaubt die einen der folgenden Buchastaben: A E M N S U X vor einer Liniennummer sowie einen der Buchstaben A B C D E hinter der Liniennummer.
Damit sollten die Gängigsten Liniennummern erkannt werden aber andere Kombinationen weggefiltert werden.
[code=lua]filter = "CUSTOM",
params = { expr = "([AEMNSUX]?[0-9]+[ABCDE]?).*$", replace = "\\1", }, [/code]Erkennt z.B. S1 U3 M17 X54 aber auch 12E
3 Links / Quellen
Deutsche Erklärung und Beispiele zu den Bedeutungen:
[url]https://www.webmaster-seo.com/de/regexp[/url]
Zum Testen der erstellten RegExp:
[url]https://regex101.com/[/url]
Die wohl nach Urban Games zugrundeliegende Referenz auf Englisch:
[url]https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html[/url]