Skip to content
Hamatoma edited this page Sep 27, 2022 · 10 revisions

Mit Suchmustern werden die Teile der Eingabe spezifiziert, die in der Ausgabe erscheinen sollen.

Table of Contents

Parameter

Name Typ Beschreibung Beispiel
append bool das Ergebnis wird im Zielpuffer angehängt app
end pattern Es werden nur Zeilen untersucht, die vor einer Zeile stehen, die auf dieses Suchmuster passt. end="</address>"
excluded pattern Passt eine Zeile auf diesen regulärer Ausdruck, wird sie nicht ins Ziel übernommen. excluded=r/2021\.\d+.\d+/
Excluded patternList Eine Liste von regulären Ausdrücken: Passte eine auf eine Zeile, wird diese nicht ins Ziel übernommen. Auto-Separator. Excluded=;/Hello /;r/[hH]i /"
filter pattern Passt eine Zeile auf diesen regulärer Ausdruck, wird sie ins Ziel übernommen. filter=r/2021\.\d+.\d+/
Filters patternList Eine Liste von regulären Ausdrücken: Passte eine auf eine Zeile, wird diese ins Ziel übernommen. Auto-Separator. Filters=;/Hello /;r/[hH]i /"
input bufferName Der Text aus diesem Puffer wird gefiltert. Voreinstellung: input input=data
meta character Delimiter für die Platzhalter innerhalb von input. Voreinstellung: % meta=%
output bufferName das Ergebnis wird in diesen Puffer geschrieben. Voreinstellung: output output=result
repeat nat Ist diese Zahl größer 1, wird der Bereich start und end entsprechend oft gesucht. 0: beliebig oft suchen. Nur sinnvoll, wenn sowohl start und end definiert sind. Voreinstellung: 1 repeat=5
start pattern Es werden nur Zeilen untersucht, die ab einer Zeile stehen, die auf dieses Suchmuster passt. start=/<address>/
start=r/<(id|name)/
template string Für jeden Treffer wird diese Vorlage ausgegeben, nachdem dort die Platzhalter ersetzt wurden. Wird kein template angegeben, wird die ganze Zeile mit dem Treffer ausgegeben. Kann interpolierten Text enthalten. template=i~"Name: %1%~n"
Templates stringList Das Analogon zu template, wenn Filters statt filter angegeben wurde. Der erste Eintrag in 'Templates' ist dem ersten Eintrag in Filters zugeordnet, usw. Wird kein Templates angegeben, wird die ganze Zeile mit dem Treffer ausgegeben. Kann interpolierten Text enthalten. Templates=;i~"Name: %1%~n";i~"Id: %1%~n"

Hinweise:

  • Von den Parametern filter und Filters muss genau einer angegeben werden, also nicht keiner und nicht beide.
  • Von den Parametern template und Templates darf höchstens einer angegeben werden.

Platzhalter

In den Parametern template und Templates können folgende Platzhalter auftauchen:

  • %group0%: der gesamte Treffer des regulären Ausdrucks.
  • %group1%: das, was mit dem ersten Klammerpaar im regulären Ausdruck gefunden wird. Klammerpaare werden nach dem Auftreten der öffnenden Klammer nummeriert.
  • %group2%: das, was mit dem zweiten Klammerpaar im regulären Ausdruck gefunden wird.
und so weiter.
  • %0%: die Kurzform für %group0%
  • %1%: die Kurzform für %group1%
Hinweis: Die Delimiter "%" der Platzhalter kann über den Parameter meta geändert werden.

Beispiele

Gilt für alle Beispiele: In Puffer input steht:

<?xml version="1.0" encoding="UTF-8"?>
<staff>
  <company>
    <name>Easy Rider</name>
  </company>
  <person>
    <id>1</id>
    <name>Adam</name>
  </person>
  <person>
    <id>2</id>
    <name>Berta</name>
  </person>
  <person>
    <id>3</id>
    <name>Charly</name>
  </person>
</staff>

Beispiel 1

Kommando:

filter fi=/name/
In Puffer output steht:
    <name>Easy Rider</name>
    <name>Adam</name>
    <name>Berta</name>
    <name>Charly</name>

Beispiel 2

Kommando:

filter start=/<person/ end=!</person!>fi=/name/ repeat=2
In Puffer output steht:
    <name>Adam</name>
    <name>Berta</name>

Beispiel 3

Kommando:

filter start=/<person/ end=!</person!>fi=r/<(name|id)>(.*?)</repeat=2>template="%group1%: %group2%"
In Puffer output steht:
id: 1
name: Adam
id: 2
name Berta

Beispiel 4

Kommando:

filter start=/<person/ end=!/person! Filters=;"<name";"<id" repeat=2
In Puffer output:
    <id>1</id>
    <name>Adam</name>
    <id>1</id>
    <name>Berta</name>

Beispiel 5

Kommando:

filter start=/<person/ end=!</person!>Filters=;r"<(name)>(.*?)<";r"<id>(.*?)<" repeat=2 Templates=;"%1%: %2%\n";"no: %1%\n"
In Puffer output:
no: 1
name: Adam
no: 2
name: Berta

Beispiel 6

Kommando:

filter start=/<person/ excluded=r!id|person|staff!
In Puffer output steht:
    <id>1</id>
    <id>2</id>
    <id>3</id>

Clone this wiki locally