Die GUI-Seite Inhalte herausfiltern beschreibt die aktuelle Profil-Sidebar. Diese Programming-Seite dokumentiert die Rohwerte und die Java-RegEx-Ausführung getrennt von der Bedienoberfläche.
| Name | Wert und Bedeutung |
|---|---|
FILTERS | Enthält die Filterkennung REGEXP, damit der Inhaltsfilter aktiv ist. Die Werte werden als kommaseparierte Liste gespeichert. |
FILTER_PATTERNS | Enthält mehrere Musterzeilen, die durch echte Zeilenumbrüche getrennt sind. Das kanonische Format pro Zeile ist Muster|Typ|Status mit Typ als text oder regexp und Status als active oder inactive. |
REGEX_MATCH_WORDS | Boolescher Wert, standardmäßig true. Bei true wird jedes von einem Treffer berührte Wort vollständig entfernt. Bei false werden nur die passenden Zeichenbereiche entfernt. |
Inaktive Muster bleiben gespeichert, werden aber nicht angewendet. Aktive Muster müssen Inhalt enthalten. Ein aktives RegEx-Muster muss als Java-Pattern kompilierbar sein; ein inaktives ungültiges Muster kann als Entwurf erhalten bleiben.
Beim Speichern werden echte Zeilenumbrüche innerhalb eines Musters als CR kodiert. Der Decoder versteht zusätzlich das Legacy-Token BR. Wenn ein Muster selbst eines dieser Tokens enthält oder mit dem reservierten Präfix beginnt, verwendet der Codec die versionierte Hülle <base64>, damit der Mustertext eindeutig bleibt.
<entry key="FILTERS">REGEXP</entry> <entry key="REGEX_MATCH_WORDS">true</entry> <entry key="FILTER_PATTERNS">Version [[CR]][[CR]]|text|active (?s)Start.*?End|regexp|active</entry>
Die Zeilen in FILTER_PATTERNS werden in der gespeicherten Reihenfolge verarbeitet. Der Typ text wird wörtlich gesucht; der Typ regexp wird als Java-RegEx kompiliert.
| Schlüssel | Abbildung |
|---|---|
pdfc.filter.regex_filter | Aktiviert oder deaktiviert REGEXP in FILTERS. |
pdfc.filter.regex_filter.filter_patterns | Greift auf FILTER_PATTERNS als Liste von Musterzeilen zu. |
pdfc.filter.regex_filter.match_words | Greift auf REGEX_MATCH_WORDS zu. true entspricht Ganze Wörter, false entspricht Teiltreffer. |
RegEx-Muster werden mit Java Pattern.compile ohne fest vorgegebene Flag-Maske kompiliert. Klartextmuster werden vor der Kompilierung mit Java Pattern.quote wörtlich maskiert. Für reguläre Ausdrücke gelten daher die Java-RegEx-Regeln einschließlich eingebetteter Flags.
(?s) aktiviert DOTALL für den folgenden Ausdruck und lässt den Punkt auch über Zeilenumbrüche hinweg suchen.(?m) aktiviert MULTILINE und ändert die Bedeutung von ^ und $ für einzelne Zeilen.(?i) für eine Suche ohne Beachtung der Groß- und Kleinschreibung.(?s)Start.*?End (?m)^Artikel:.*$
Jedes aktive Muster wird mit Java Matcher.find() auf den vollständig extrahierten Seitentext angewendet. Die Suche erfolgt nicht getrennt für einzelne PDF-Textelemente. Ein ungültiger aktiver Java-RegEx wird bei der Sidebar-Validierung abgewiesen.
Enthält ein Treffer keine Capture Groups, wird der vollständige Treffer, also Gruppe 0, entfernt. Enthält das Muster mindestens eine Capture Group, werden nur die tatsächlich beteiligten Gruppen 1 bis n entfernt. Gruppe 0 wird in diesem Fall nicht zusätzlich entfernt. Eine optionale Gruppe, die bei einem konkreten Treffer nicht beteiligt ist, wird übersprungen.
Invoice (number: [0-9]+)
Bei Ganze Wörter wird jedes von einem Treffer berührte Wort vollständig entfernt. Bei Teiltreffer werden nur die durch den Treffer oder die beteiligten Capture Groups beschriebenen Zeichenbereiche entfernt. Überlappende Bereiche werden zusammengeführt, bevor die Seitenelemente angepasst werden.
REGEXP in FILTERS.active oder inactive der jeweiligen Musterzeile.text und sucht den Inhalt wörtlich. Regulärer Ausdruck verwendet den Typ regexp und die Java-RegEx-Semantik.REGEX_MATCH_WORDS.