CSVfox
Get the job done.
 Deutsch

±regex

Ändert den Inhalt eines CSV Tabellenfeldes mit Hilfe eines regulären Ausdrucks

Damit können Sie ein Feld mit Hilfe eines regulären Ausdrucks (regex) ändern.
Siehe auch https://wikipedia.org/wiki/Regular_expression.

Der Ausgangsausdruck, das Muster und die Ersetzung werden jeweils durch ein Trennzeichen (meist ein "/") getrennt. Es handelt sich also um eine dreiteilige Kombination.
Bitte beachten Sie, dass innerhalb jedes Teils der Kombination ein buchstäblicher Schrägstrich mit einem Backslash maskiert werden muss, um Verwechslungen zu vermeiden, etwa so \/ .
Wenn Sie mehrere Regex-Ausdrücke eingeben, kann es auch notwendig sein, jedes eingebettete Komma mit einem Backslash zu schützen, wie zum Beispiel: \, . Dies liegt daran, dass mehrere Regex-Ausdrücke für mehrere betroffene Felder ebenfalls mit Kommas verkettet werden. Daher muss jedes Komma innerhalb eines Ausdrucks mit einem Backslash geschützt werden.

Der Anfangsteil kann eine leere Zeichenkette, ein Feldinhalt oder ein komplexerer Ausdruck sein. Er wird aufgelöst, bevor der Regex-Mustervergleich stattfindet. Wenn Sie nur das aktuelle Feld selbst ändern wollen, ohne externe Komponenten, können Sie [*] als Ausdrucksteil verwenden oder ihn einfach weglassen (so dass das Argument mit / beginnt).

Der zweite Teil ist ein allgemeines Regex-Muster, das den üblichen Regex-Konventionen folgt.
Daher wird dieses Regex-Muster nicht nach den Auflösungsregeln von CSVfox aufgelöst, da es ausschließlich von der Regex-Automatik behandelt werden muss.

Der dritte Teil beschreibt das Ersetzungsmuster, das schließlich als Inhalt des neuen Feldes eingefügt wird. Die gesamte erfasste Regex-Gruppe kann mit $0 oder mit \0 rückreferenziert werden, und alle erfassten Untergruppen können als $1 bis $9 oder als \1 bis \9 rückreferenziert werden.
Ob \ oder $ verwendet werden sollte, hängt von den Anforderungen der Befehlszeile ab und davon, was von beiden einfacher eingegeben werden kann.
Schließlich wird dieser generierte Ersatzteil auch als auflösbarer Ausdruck betrachtet und aufgelöst.

Modifikatoren
Wenn der Regex-Modifikator /i verwendet wird, wird bei der Mustererkennung die Groß- und Kleinschreibung nicht berücksichtigt.
Wenn der Regex-Modifikator /m verwendet wird, erfolgt der Musterabgleich im Mehrzeilenmodus. Die Zeichen ^ und $ finden dann den Anfang und das Ende jeder Zeile, anstatt den Anfang und das Ende des gesamten Textes zu finden.
Wenn der Regex-Modifikator /s verwendet wird, erfolgt der Musterabgleich im Einzeilenmodus. Dies ändert die . von der Suche nach jedem Zeichen außer dem Zeilenumbruch auf jedes Zeichen einschließlich des Zeilenumbruchs.
Wenn der Regex-Modifikator /e verwendet wird, gibt der Musterabgleich nur explizit benannte Gruppen zurück, anstatt alle Gruppen.

Muster

±regex[Feld]=/Muster/Ersetzung ±regex[Feld]=Ausdruck/Muster/Ersetzung ±regex/i[Feld]=Ausdruck/Muster/Ersetzung

Beispiele für die Verwendung

einige Beispiele hier ...

Nachstehende Minuszeichen korrigieren

Dies verschiebt alle nachgestellten Minuszeichen eines Betragsfeldes nach vorne, wenn die Felder nur eine Dezimalzahl, ein Minuszeichen und optional etwas Leerraum enthalten:

-regex[Price]=[*]/^\s*([0-9][0-9,.]*)([-])\s*$/\2\1

Es macht Folgendes:

Ausdruck:
Der erste Teil [*] bezieht sich auf den Inhalt der aktuellen Spalte (die hier die Spalte "Price" ist).

Muster:
Das Regex-Muster zwischen den beiden Schrägstrichen beschreibt :
- den Anfang der Zeichenkette (^),
- vielleicht einige Leerzeichen (\s*),
- eine Gruppe von Zahlen und Trennzeichen (in Klammern, d.h. Gruppe 1),
- ein Minuszeichen (in Klammern, d.h. Gruppe 2),
- und vielleicht noch etwas Leerraum (\s*),
- und das Ende der Zeichenfolge ($).

Ersetzung:
Wenn der aktuelle Feldinhalt mit dieser Beschreibung übereinstimmt, wird er ersetzt durch
zuerst durch die Gruppe 2 (\2, die das Minuszeichen enthält)
und dann durch die Gruppe 1 (\1, die die Zahlen enthält).
Das Feld besteht jetzt also zuerst aus dem Minuszeichen und dann aus den Zahlen.
Das Leerzeichen ist verschwunden, weil es nicht in Gruppen erfasst und wieder in den Ersetzungsausdruck eingefügt wurde.

Aufsummieren der Ziffern einer Zahl

Dies summiert alle Ziffern des Geburtsjahrs Birth in ein Feld SumOfBirthDigits.

+regex[SumOfBirthDigits]=[Birth]/(\d)(\d)(\d)(\d)/$1+$2+$3+$4=($1+$2+$3+$4)

Ausdruck:
Der erste Teil [Birth] besagt, dass dieses Feld verwendet werden soll.

Muster:
Das Muster (\d)(\d)(\d)(\d) erfasst 4 Ziffern im Feld [Birth] und setzt sie in die Platzhalter für Rückverweise $1, $2, $3 und $4.

Ersetzung:
Der Inhalt $1+$2+$3+$4=($1+$2+$3+$4) zeigt zunächst alle vier Rückverweise zusammen mit einem Pluszeichen + an. Nach dem Gleichheitszeichen = folgt eine Formel, die, wenn sie aufgelöst wird, alle Werte addiert und die Summe zurückgibt.
Under construction, coming soon