Skip to content

replace

hamatoma edited this page Jul 11, 2021 · 3 revisions

Damit können Suchmuster ersetzt werden. Als Suchmuster sind Strings oder reguläre Ausdrücke möglich. Mit einem Kommando können viele Suchmuster auf einmal mit jeweils anderm Wert versehen werden.

Bei regulären Suchmustern kann ein Teil des Treffers im Ersatz verwendet werden.

Table of Contents

Parameter

Name Typ Beschreibung Beispiel
append bool das Ergebnis wird im Zielpuffer angehängt app
input bufferName Der Text aus diesem Puffer wird untersucht. Voreinstellung: input input=data
output bufferName das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output output=result
meta character Delimiter für die Referenzen innerhalb von des Ersatzmusters (Gruppen). Voreinstellung: % meta=%
What patternList Eine Liste mit abwechselnd Suchmuster und Ersatzwert, beginnend mit Separator (Autoseparator). Suchmuster ist ein regulärer Ausdruck, ein normaler String oder ein String ohne Berücksichtigung von Groß-/Kleinschreibung. What=|":id"|"19429"|":date"|"2021-06-27"
What=;r/<(name|id)>(.*?)</(name|id)>/;"%group1%: %group2%";"<br/>";""

Referenzen bei Ersatzwerten

Es können Referenzen auf das Suchmuster beim Ersatzwert angegeben werden:

  • Bei normalen Strings und regulären Ausdrücken: %group0% (oder abgekürzt %0%), damit ist der Suchstring gemeint.
  • Nur bei regulären Ausdrücken: %groupN% (oder abgekürzt %N%). N steht für eine Zahl (1, 2, ...) und referenziert den Treffer der N-ten Klammer im Suchausdruck.
  • Der Delimiter der Gruppen (im Beispiel "%") kann mit dem Parameter meta umdefiniert werden.
Beispiel mit normalem String:
What=;"Long sentence with many words.";"%0 %0 %0"
Hier wird jeder gefundene Treffer drei mal wiederholt.
Beispiel mit regulären Ausdrücken:
What=;r/<(name|id)>(.*?)</(name|id)>/;"%group1%: %group2%";R/<br/?>/;""
Beschreibung der Suchausdrücke:
  • Suche '<', gefolgt von "name" oder "id" (definiert als Gruppe 1, da erste Klammer), gefolgt von '">", gefolgt von beliebigem String ohne den nachfolgenden Ausdruck (wegen des "*?") (definiert als Gruppe 2, da 2.te Klammer), gefolgt von "<" und "/", gefolgt von "name" oder "id" (definiert als Gruppe 3, da 3.te Klammer).
  • Ersetze das obige Muster durch die die ersten Gruppe (also "name" oder "id").
  • Suche "<br", gefolgt von "/" oder auch nicht (wegen des '?'), gefolgt von ">".
  • Ersetze dieses Muster durch nichts (zwischen Separator ";" und dem Stringende " steht nichts.
Im Puffer, in dem ersetzt wird, steht:
<name>Adam</name></br>
<id>27</name><br>
Im Ergebnispuffer steht dann:
name: Adam
id: 27

Beispiele

Beispiel 1: Ersetzen der benannten Parameter in SQL-Statement

Im Puffer sql steht:

SELECT
  bill_no,
  (SELECT sum(price) FROM billitems bi
    WHERE bb.billitem_bill=bi.bill_id
      AND billitem_date = :date
  ) as price_sum
FROM bill bb
WHERE
  bb.bill_name like :name AND bill_created = :date
;
Kommando:
replace What=;/:name/;'Miller';/:date/;"'2021-06-02'" input=sql
Im Ergebnispuffer output (Voreinstellung) steht:
SELECT
  bill_no,
  (SELECT sum(price) FROM billitems bi
    WHERE bb.billitem_bill=bi.bill_id
      AND billitem_date = '2021-06-02'
  ) as price_sum
FROM bill bb
WHERE
  bb.bill_name like 'Miller' AND bill_created = '2021-06-02'
;

Beispiel 2: Vertauschen von Spalten in einer CSV-Datei

Im Puffer input steht:

name;id;year
Adam;10;1970
Berta;11;2003
Kommando:
replace What=|r/(.*?);(.*?);(.*)/|"%2%;%3%;%1%"
Im Ergebnispuffer output (Voreinstellung) steht:
id;year;name
10;1970;Adam
11;2003;Berta

Clone this wiki locally