-
Notifications
You must be signed in to change notification settings - Fork 0
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.
| 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/>";""
|
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.
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.
<name>Adam</name></br> <id>27</name><br>Im Ergebnispuffer steht dann:
name: Adam id: 27
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=sqlIm 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'
;
Im Puffer input steht:
name;id;year Adam;10;1970 Berta;11;2003Kommando:
replace What=|r/(.*?);(.*?);(.*)/|"%2%;%3%;%1%"Im Ergebnispuffer output (Voreinstellung) steht:
id;year;name 10;1970;Adam 11;2003;Berta