Regular Expressions

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Funktionen >

Regular Expressions

MapForce kann Regular Expressions im pattern-Parameter der Funktiontokenize-regexp verwenden, um bestimmte Strings des Input-Parameters zu finden.

 

Die Syntax und Semantik von Regular Expressions für XSLT und XQuery entspricht den in http://www.w3.org/TR/xmlschema-2/ definierten Regeln. Beachten Sie bitte, dass es in der Syntax von Regular Expressions geringfügige Unterschiede zwischen den verschiedenen Programmiersprachen gibt.

 

Terminologie:

 


input

der String, an dem der regex-Ausdruck ausgeführt wird


pattern

die Regular Expression


flags

optionaler Parameter, um zu definieren, wie die Regular Expression zu interpretieren ist


result

das Ergebnis der Funktion

 

regex6

 

Tokenize-regexp gibt eine Stringsequenz zurück. Mit der Verbindung des Datenelements "Rows" wird in der Sequenz eine Zeile pro Datenelement erstellt.

 

regex-Syntax

Literals e.g. Einzelnes Zeichen:

"a" ist z.B. der einfachste regex-Ausdruck. Er findet die erste Instanz des Buchstaben "a" in einem String.

 

Zeichenklassen []

Dies ist eine Gruppe von Zeichen, die innerhalb von eckigen Klammern steht.

 

Es wird immer nur jeweils ein einziges der Zeichen innerhalb der eckigen Klammern gefunden.

 

 

pattern

[aeiou]

Findet einen kleingeschriebenen Vokal.

 

pattern

[mj]ust

Findet must oder just.

 

Bitte beachten Sie, dass bei "pattern" die Groß- und Kleinschreibung eine Rolle spielt, daher wird mit einem kleingeschriebenen a der Großbuchstabe A nicht gefunden.

 

Zeichenbereich [a-z]

Erstellt einen Bereich zwischen den beiden Zeichen. Es wird immer nur jeweils eines der Zeichen gefunden.

 

pattern

[a-z]

Findet alle Kleinbuchstaben zwischen a und z.

 

 

Negierte Klassen [^]

mit dem Zikumflexzeichen als erstem Zeichen nach der öffnenden Klammer wird die Zeichenklasse negiert.

 

pattern

[^a-z]

Findet alle Zeichen außerhalb der Zeichenklasse, einschließlich von Zeilenschaltungen (newline).

 

Metazeichen "."

Punkt-Metazeichen

steht für jedes beliebige einzelne Zeichen (mit Ausnahme von "newline")

 

pattern

.

Findet jedes einzelne Zeichen.

 

Quantifizierer ? + * {}

Quantifizierer definieren, wie oft eine regex-Komponente im Input-String wiederholt werden muss, damit eine Übereinstimmung gefunden wird.

 


?



null oder eins

der vorhergehende String/Abschnitt ist optional





+



eines oder mehrere

der vorhergehende String/Abschnitt darf ein Mal oder öfter gefunden werden





*



null oder mehr

der vorhergehende String/Abschnitt darf null Mal oder öfter gefunden werden





{}



min / max
Wiederholungen

die Anzahl der Wiederholungen mit denen ein String/Abschnitt gefunden werden muss



z.B. wird mit "mo{1,3}" mo, moo, mooo gefunden.

 

 

()        

Subpatterns  (Untergruppen)        

Um Teile eines regex-Ausdrucks zu gruppieren, werden Klammern verwendet.

 

 

|        

Alternation/oder         gestattet das Testen von Unterausdrücken von links nach rechts.

(horse|make) sense - findet "horse sense" oder "make sense"

 

Flags

Flags sind optionale Parameter, die definieren, wie die Regular Expression interpretiert werden soll. Zum Definieren der Optionen dienen einzelne Buchstaben, d.h., wenn das jeweilige Zeichen vorhanden ist, ist diese Option aktiv. Die Buchstaben können in jeder Reihenfolge vorkommen und auch wiederholt werden.

 

s

Falls vorhanden, wird der Suchvorgang im "dot-all"-Modus durchgeführt.

 

Das Metazeichen "." steht für jedes beliebige Zeichen. Wenn der String "hello" und "world" in zwei verschiedenen Zeilen vorkommt, wird mit der Regular Expression "hello*world" nur gefunden, wenn das Flag/Zeichen s gesetzt wurde.

 

m

Falls vorhanden, wird der Suchvorgang im mehrzeiligen Modus durchgeführt.

 

Im mehrzeiligen Modus findet das Zirkumflexzeichen ^ den Beginn jeder Zeile, d.h. den Beginn des gesamten Strings und das erste Zeichen nach dem "newline" Zeichen.

 

Das Dollarzeichen $ findet das Ende jeder Zeile, d.h. das Ende des gesamten Strings und das Zeichen unmittelbar vor dem "newline" Zeichen.

 

Newline (Neue Zeile) ist das Zeichen #x0A.

 

i

Falls vorhanden, wird der Suchvorgang im Modus "Groß-/Kleinschreibung ignorieren" durchgeführt.

Mit der Regular Expression [a-z] plus dem i Flag würden alle Buchstaben von a-z und A-Z gefunden.

 

regex7

 

x

Falls vorhanden, werden Leerzeichen und andere Whitespace-Zeichen vor dem Suchvorgang aus der Regular Expression entfernt. Die Whitespace-Zeichen sind #x09, #x0A, #x0D und #x20.

 

Ausnahme:

Whitespace-Zeichen innerhalb von Zeichenklassen-Ausdrücken werden nicht entfernt z.B. [#x20].

 

 

Bitte beachten Sie:

Die komplexen Funktionalitäten der regex-Syntax können sich bei der Generierung von Code in den verschiedenen Programmiersprachen etwas unterschiedlich verhalten. Lesen Sie bitte in der entsprechenden regex-Dokumentation zu Ihrer Sprache nach.

 

 


© 2019 Altova GmbH