Reguläre Ausdrücke eröffnen neue Welten bei der Suche innerhalb von Texten. Durch sie können komplexe Suchanfragen formuliert werden, die exakt die gewünschten Textstellen finden. In Kürze werden sie in CONZEPT 16 verfügbar sein.
Ein regulärer Ausdruck ist im Grunde eine Zeichenkette, die ein bestimmtes Textmuster definiert. Der Ausdruck „gr[ae
y]“ steht beispielsweise für die Wörter „gray“ und „grey“. Bei einer Textsuche in englischsprachigen Texten wird damit sowohl die amerikanische als auch die britische Schreibweise des Wortes gefunden.
Eine Suche nach unterschiedlichen Wörtern kann aber auch mithilfe des Pipe-Symbols angegeben werden: Über „RecInsert|RecReplace
“ ließe sich in einer Prozedur nach Stellen suchen, in denen Datensätze angelegt oder ersetzt werden.
Darüber hinaus bieten die regulären Ausdrücke zahlreiche weitere Möglichkeiten, um ein gesuchtes Textmuster zu definieren. Weiterführende Informationen finden Sie beispielsweise auf folgenden Seiten:
- Wikipedia – Allgemeine Einführung
- Regular Expressions – Ausführliches Tutorial (englisch)
- ICU Project – Auflistung der unterstützten Ausdrücke (englisch)
Integration in CONZEPT 16
Im ersten Schritt planen wir die Integration von regulären Ausdrücken an drei verschiedenen Stellen:
- Prozedurbefehl: Über
StrFindRegEx()
wird es möglich sein, beliebige Zeichenketten mit einem regulären Ausdruck zu durchsuchen. Die Funktion liefert die Position und die Länge des gefundenen Treffers zurück. - Prozedureditor: Die Suchleiste innerhalb des Prozedureditors wird die aktuelle Prozedur mit einem regulären Ausdruck durchsuchen können.
- Prozedurassistent: Das Durchsuchen aller Prozeduren mithilfe eines regulären Ausdrucks wird möglich sein.
Nachfolgend ein paar Beispiele, welche Suchvorgänge durch die Verwendung von regulären Ausdrücken im Prozedureditor möglich werden:
- Funktionsnamen
Suche nach Funktionen, deren Name mit „Print“ endet:
^sub [\w\d
+Print\b] - Funktionsaufrufe
Ermitteln von Aufrufen der Funktion „SysFnc:SelectNode“. Durch „//“ auskommentierte Funktionsaufrufe werden dabei übersprungen:
(?<!//)SysFnc:SelectNode\(
- Variablen
Suche nach Variablendeklarationen mit einem bestimmtem Namen und/oder einem bestimmtem Typ. Der nachfolgende Ausdruck findet beispielsweise alle alphanumerischen Variablen mit dem Prefix „t“, die das Wort „path“ enthalten:
t(?i)[a-z0-9
*path[a-z0-9]*[ ]+:[ ]*alpha]
Validierung
Neben der Suche von Texten lassen sich reguläre Ausdrücke auch zum Validieren von Texteingaben verwenden. Über einen entsprechenden Ausdruck kann beispielsweise geprüft werden, ob es sich bei einer Zeichenkette um eine gültige E-Mailadresse oder Webadresse handelt.
Die Mächtigkeit von regulären Ausdrücken ist immens. Dies kann zu Beginn etwas abschreckend wirken, sollte Sie aber nicht davon abhalten, sich mit dem Thema zu befassen. Mit ein wenig Einarbeitungszeit haben Sie damit ein Mittel zu Hand, das es Ihnen erlaubt, genau die Stellen in (Quell-)Texten zu finden, die Sie suchen.
5 Antworten
Großes Lob an die Entwickler. Im Prozedur-Assistent gibt es dadurch herrlich kleine Trefferlisten und eine sehr große Zeitersparnis.
das sind mal schöne Nachrichten. Vielen Dank!
Vielen Dank für das positive Feedback!
@Klaus
Die regulären Ausdrücke werden bereits in der 5.6.02 enthalten sein. Inzwischen ist auch der Befehl TextSearchRegEx() fertig implementiert, sodass auch die Suche in internen & externen Texten möglich sein wird.
So macht der Blog Spass, wenn man Informationen über geplante Neuerungen erhält.
Bedeutet "in Kürze verfügbar", dass dies bereits bei der 5.6.02 enthalten sein wird ?
Werden in einem weiteren Schritt dann auch Reguläre Ausdrücke bei internen Texten möglich sein ?
Hört sich sehr gut an!