Reguläre Ausdrücke (RegExp / Regex)

Was sind reguläre Ausdrücke und wie werden sie verwendet?

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 04.05.2004
Aktualisiert: 07.08.2019 | Titel ergänzt mit den Begriffen RegExp und Regex.

Der OCL-Operatoren regExpMatch und replaceRegex verwenden reguläre Ausdrücke.

Im Internet sind viele Informationen zu regulären Ausdrücken zu finden. Hier als Beispiel der Artikel Regulärer Ausdruck in Wikipedia. Eine gute Einführung findet sich auch unter folgendem Link: http://www.regular-expressions.info/

In Vertec können die Grundelemente (., *, +, [, ], ^, $, -, \) verwendet werden:

.Any single character. Example: h.t matches hat, hit, hot and hut.
[ ]Any one of the characters in the brackets, or any of a range of characters separated by a hyphen (-).

Examples: h[aeiou][a-z] matches hat, hip, hit, hop, and hut; x[0-9] matches x0, x1, ..., x9.

[^]Any characters except for those after the caret "^".

Example: h[^u]t matches hat, hit, and hot, but not hut.

^The start of a line.
$The end of a line (not the line break characters). Use this for restricting matches to characters at the end of a line.

Example: end$ only matches "end" when it's the last word on a line, and ^end only matches "end" when it's the first word on a line.

*Matches zero or more of the preceding characters or expressions.

Example: ho*p matches hp, hop and hoop.

+Matches one or more of the preceding characters or expressions.

Example: ho+p matches hop, and hoop, but not hp.

\"Escapes" the special meaning of the above expressions, so that they can be matched as literal characters. Hence, to match a literal "\", you must use "\\".

Beispielsammlung

Kontrolliert, ob eine Telefonnummer nur aus Ziffern besteht. Erlaubt sind Leerschläge und '-'.

standardtelefon.regExpMatch('^[0-9 -]*$')

Stellt einen Adresstext in einer Zeile dar, die Zeilen werden durch Kommata getrennt:

oclastype(Adresseintrag).adresstext.replaceregex('\r\n',', ').replaceregex('\n',', ')

Kürzt vom ausgeschriebenen Namen auf dem Bearbeiter den Vornamen ab (Vorname und Name befinden im gleichen Feld):

name.replaceregex('.*\s+', name.substring(0,0)+'. ')

Ergebnis:

Hans Muster -> H. Muster
Hans P. Muster -> H. Muster

Sucht in allen Adressen nach allen Mayers, Mejers, Maiers, Meyers etc.:

adresseintrag->select(name->regExpMatch('M[ae][ijy]er'))

Zeigt in einer Spalte auf einer Liste von Firmen vom Firmennamen nur das an, was in einer Klammer steht:

if name.sqllike ('%(%') then name.replaceRegex('^.*\(','').replaceregex('\)$','') else '' endif

Ergebnis:

Testfirma (Zusatzinformation) -> Zusatzinformation

Zeigt in einer Spalte auf einer Liste von Firmen vom Firmennamen nur das an, was nicht in einer Klammer steht:

name.replaceregex('\(.*\)$','')

Ergebnis:

Testfirma (Zusatzinformation) -> Testfirma

Bitte wählen Sie Ihren Standort