EncodingPatcherWithRegexReplacement

Gruppe

Preparser

Funktion

Ein Preparser, der sowohl Bytes, oder Bytefolgen ersetzen kann, wie der EncodingPatcher, als auch zusätzlich zeilenweise Regex-Ersetzungen ausführen kann.

Konfigurationsdatei

sample_encoding_patcher_regex.properties

Beschreibung


Dieser Preparser enthält die Funktionalität des Preparsers EncodingPatcher zur byteweisen Ersetzung, führt danach aber noch zeilenweise eine Textersetzung regulärer Ausdrücke aus. Dazwischen erfolgt die Interpretation des Bytestromes als Text mit Hilfe des Profil-Encodings. Die Regeln für Byte-Ersetzung und Text-Ersetzung stehen in der selben Properties-Datei. Byte-Ersetzungsregeln beginnen mit 0x und Text-Ersetzungsregeln beginnen mit regex. am Zeilenanfang.

Parameterbeschreibung


Parameter

Beschreibung

regex.<regulärer Ausdruck>

Hier wird der Ersetzungs-String angegeben.

replaceparts

(optional) Bei true werden auch Teile der Zeile ersetzt. Siehe unten. Default: false.

use.crlf

(optional) Bei true wird die Zeilenschaltung als CR+LF (0x0d0a) erzwungen. Siehe unten. Default: false.

check.BOM

(optional) Falls true, dann wird das BOM beachtet und entsprechend umkodiert. Default: false. Für Details siehe EncodingByBomOrXmlPreParser.

check.XML

(optional) Falls true, dann wird die XML-Kodierung beachtet und entsprechend umkodiert. Default: false. Für Details siehe EncodingByBomOrXmlPreParser.

Beispiel


regex.^$ = Leerzeile

In diesem Beispiel wird jede Leerzeile, die (außer der Zeilenschaltung) kein Zeichen enthält durch das Wort Leerzeile ersetzt.

Im Gegensatz zu den Byte-Regeln, stehen die Regex-Regeln in einer Reihenfolge. Sie werden nacheinander ausgeführt. Wenn das Ergebnis einer Ersetzung das Muster einer späteren Ersetzung trifft, wird diese zweite Ersetzung auch ausgeführt.

Das Muster einer Regex-Regel muss für die ganze Zeile treffen. Teile der Zeile werden nur ersetzt, wenn zusätzlich in der Konfigurationsdatei die folgende Property steht: replaceparts=true. Diese Einstellung gilt dann aber für alle Regex-Regeln. Durch zusätzliche Verwendung der Muster ^ für Zeilenanfang und $ für Zeilenende können auch in diesem Fall Regeln definiert werden, die die gesamte Zeile betreffen.

Hinweis: Dieser Preparser arbeitet in der zweiten Phase (Regex-Phase) zeichenweise (nicht byteweise) und zeilenweise. Mit der Textersetzung dieses Preparsers können keine Zeilen entfernt oder hinzugefügt werden, sondern nur der Inhalt von Zeilen geändert werden. Unabhängig von der Byte-Codierung der Zeilenschaltung in den Quelldaten (CR+LF oder LF) schreibt der Preparser in den Zieldaten die Zeilenschaltung UNIX-Konform als LF (line feed) (0x0a). Um die Byte-Codierung der Zeilenschaltung als CR+LF (0x0d0a) zu erzwingen, muss Property use.crlf=true gesetzt werden.

Die Codierung der Zeilenschaltung könnte von Belang sein, wenn dieser Preparser im Postexecuter oder in einer Funktion aufgerufen wird oder wenn die Backupdatei vom Preparser überschrieben wird.


Hier sind Reguläre Ausdrücke in Java beschrieben.

Beispiel-Datei


sample_encoding_patcher_regex.properties
#! class = com.ebd.hub.datawizard.parser.stream.EncodingPatcher
# Properties File for formatting EDI and TradaComs
# Encoding: only ISO-8859_1 or ASCII. For UTF8 use with care.
# UNA:+.? '\r\n replace nothing
0x554E413A2B2E3F20270D0A=0x554E413A2B2E3F20270D0A
# UNA:+.? '\n -> UNA:+.? '\r\n
0x554E413A2B2E3F20270A=0x554E413A2B2E3F20270D0A
# UNA:+.? 'UN -> UNA:+.? '\r\nUN
0x554E413A2B2E3F2027554E=0x554E413A2B2E3F20270D0A554E
# ?? replace nothing
0x3F3F=0x3F3F
# ?' replace nothing
0x3F27=0x3F27
# '\r\n replace nothing
0x270D0A=0x270D0A
# '\n -> '\r\n
0x270A=0x270D0A
# ' -> '\r\n
0x27=0x270D0A
regex.^$=Leerzeile
replaceparts=false