Reguläre Ausdrücke erfordern bestimmte Kombinationen von Zeichen für den Musterabgleich. Mit Hilfe von regulären Ausdrücken lassen sich Übereinstimmungen mit Teilen oder Abschnitten eines Strings suchen. So können Sie z. B. mit regulären Ausdrücken eine Variable in einem Programmcode-String oder einen bestimmten Wert in einem Protokoll finden.

Hinweis Die Funktionen "Regulären Ausdruck suchen" und "String suchen und ersetzen" unterstützen keine NULL-Zeichen in Strings. Reguläre Ausdrücke können außerdem nach einem leeren String suchen. Wenn keine Übereinstimmung für einen regulären Ausdruck gefunden wird, gibt Offset nach Übereinstimmung –1 aus.

Die Unterstützung für reguläre Ausdrücke in LabVIEW wird vom PCRE-Bibliothekspaket bereitgestellt. Weitere Informationen zur Lizenz, unter der das PCRE-Bibliothekspaket an NI-Kunden bereitgestellt wird, finden Sie im Verzeichnis <National Instruments>\_Legal Information.

Weitere Informationen zu regulären Ausdrücken, die mit Perl 5 kompatibel sind, erhalten Sie auf der PCRE-Website unter www.pcre.org.

Sonderzeichen für reguläre Ausdrücke und Such-String-Eingänge

Am Eingang Regulärer Ausdruck der Funktion "Regulären Ausdruck" suchen und am Eingang Such-String der Funktion "String suchen und ersetzen" können die in der folgenden Tabelle aufgeführten Sonderzeichen genutzt werden. Um Sonderzeichen mit der Funktion "String suchen und ersetzen" zu verwenden, klicken Sie mit der rechten Maustaste auf die Funktion und wählen Sie Regulärer Ausdruck aus dem Kontextmenü.

Hinweis Die nachfolgend aufgeführten Sonderzeichen sind nur mit den Funktionen "Regulären Ausdruck suchen" und "String suchen und ersetzen" kompatibel. Die Funktion "Muster suchen" verwendet eine begrenztere Menge an regulären Ausdrücken, ist aber schneller als die Funktion "Regulären Ausdruck suchen". Weitere Informationen zu regulären Ausdrücken für die Funktion "Muster suchen" finden Sie unter dem Thema Sonderzeichen für die Funktion "Muster suchen".
Sonderzeichen Beschreibung Beispiel(e)
. (Punkt) Sucht nach einem beliebigen Einzelzeichen mit Ausnahme des Zeichens zum Einfügen einer neuen Zeile. Der reguläre Ausdruck zum Suchen eines Punktes ist ein Punkt . in eckigen Klammern. Eingangs-String: Welcome to LabVIEW. Regulärer Ausdruck: t.... Treffer: bei La Wenn Sie [z.] als regulären Ausdruck eingeben, wird direkt nach einem Punkt gesucht und die Treffer lauten entweder . oder z. In diesem Beispiel wird bei [z.] als Ergebnis . ausgegeben.
* Markiert die vorhergehenden Einzelzeichen, Zeichengruppen oder Zeichenklassen, die keinmal oder mehrmals in der Eingabe vorkommen können. Da mit einem Sternchen ein Muster gesucht werden kann, das keinmal vorkommt, können reguläre Ausdrücke, die ein Sternchen enthalten, einen leeren String ausgeben, wenn das gesamte Muster durch ein Sternchen gekennzeichnet ist. Mit diesem Quantifikator werden per Standardeinstellung so viele Zeichen wie möglich gesucht. Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: al*Treffer: all Ausdrücke wie w* oder (willkommen)* geben einen leeren String aus, wenn die Funktion keine anderen Treffer findet.
+ Markiert die vorhergehenden Einzelzeichen, Zeichengruppen oder Zeichenklassen, die einmal oder mehrmals in der Eingabe vorkommen können. Mit diesem Quantifikator werden per Standardeinstellung so viele Zeichen wie möglich gesucht. Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: al+ Treffer: all
? Markiert die vorhergehenden Einzelzeichen, Zeichengruppen oder Zeichenklassen, die keinmal oder einmal in der Eingabe vorkommen können. Mit diesem Quantifikator werden per Standardeinstellung so viele Zeichen wie möglich gesucht. Wenn ? unmittelbar nach einem Quantor verwendet wird, modifiziert das Fragezeichen den Quantor so, dass so wenig Treffer wie möglich gefunden werden. Modifizierbare Quantoren sind z. B. *, + oder {}. Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: al?Treffer: al Eingangs-String: <ul><li>Hallo</li><li>LabVIEW</li></ul>Regulärer Ausdruck: <li>.+?</li>Treffer: <li>Hallo</li> Wenn Sie im zweiten Beispiel ? aus dem regulären Ausdruck entfernen, lautet der neue Treffer <li>Hallo</li><li>LabVIEW</li>, da + so viele Zeichen wie möglich findet – es sei denn, Sie fügen ? unmittelbar nach + ein. Mit Hilfe dieses regulären Ausdrucks können Sie jeden String zwischen <li></li> finden.
{n,N} Markiert die vorhergehenden Einzelzeichen, Zeichengruppen oder Zeichenklassen, die so oft wie angegeben vorkommen können, wobei n die Mindestanzahl und N die Höchstanzahl ist. Sie können auch eine Einzelzahl verwenden. Bei Angabe eines Bereichs findet der Quantor so viele Übereinstimmungen wie möglich. Eingangs-String: <ul><li>Hallo</li><li>Lab</li><li>VIEW</li><li>!</li></ul> Regulärer Ausdruck: (<li>.+?</li>){2} Treffer: <li>Hallo</li><li>Lab</li> Eingangs-String: <ul><li>Hallo</li><li>Lab</li><li>VIEW</li><li>!</li></ul> Regulärer Ausdruck: (<li>.+?</li>){1,3} Treffer: <li>Hallo</li><li>Lab</li><li>VIEW</li> Im zweiten Beispiel ist der Mindestwert für die Übereinstimmung eins und der Höchstwert ist drei. Da der reguläre Ausdruck so viele Übereinstimmungen ausgibt, wie innerhalb der gesetzten Grenzen möglich sind, werden drei Treffer ausgegeben.
[] Erstellt eine Zeichenklasse, mit der die Suche nach beliebigen von Ihnen gewählten Zeichensätzen möglich ist. Zum Beispiel schließt [abc] jeweils a, b oder c ein. Mit Hilfe von - können Sie einen Bereich von Zeichen festlegen. Zum Beispiel steht [a-z] für alle einzelnen Kleinbuchstaben. Die Funktionen "Regulären Ausdruck suchen" und "String suchen und ersetzen" interpretieren Sonderzeichen innerhalb von eckigen Klammern wörtlich. Eine Ausnahme bilden ^, - und \. Eingangs-String: Version=14.0.1 Regulärer Ausdruck: [0-9]+(\.[0-9]+)* Treffer: 14.0.1 Mit dem Ausdruck [0-9] wird jede beliebige Ziffer gefunden. Das Pluszeichen findet die vorherige Zeichenklasse, [0-9], mindestens einmal und so viele Male wie möglich. Mit Hilfe der Klammern wird eine Zeichengruppe gebildet, mit der nach dem Punkt (.) und allen darauffolgenden Ziffern gesucht wird. Mit dem Ausdruck \. wird nach einem . gesucht. Mit dem Pluszeichen wird die davor befindliche Zeichenklasse, [0-9], mindestens einmal und so viele Male wie möglich gesucht. Mit dem Sternchen wird die vorangehende Zeichengruppe, (\.[0-9]+), einmal oder keinmal gesucht, so dass der reguläre Ausdruck ganze Zahlen findet, wenn kein . vorhanden ist. Mit diesem regulären Ausdruck kann nach einer beliebigen ganzen Zahl, Dezimalzahl, Versionsnummer, IPv4-Adresse oder einer anderen Zahlenfolge gesucht werden, die .-Zeichen enthält.
() Erstellt eine Zeichengruppe, mit der die Suche nach einem gesamten festgelegten Zeichensatz möglich ist. Ein Quantor, der unmittelbar auf eine Zeichengruppe folgt, bezieht sich auf die ganze Gruppe. Klammern erzeugen auch Teilübereinstimmungen, wobei jede individuelle Zeichengruppe eine Teilübereinstimmung ausgibt. Wenn Sie eine Zeichengruppe in eine andere Zeichengruppe einbetten, erzeugt der reguläre Ausdruck zuerst für die äußere Gruppe und dann für die innere Gruppe eine Teilübereinstimmung. Damit die Ausgänge für Teilübereinstimmungen angezeigt werden, müssen Sie die Funktion "Regulären Ausdruck suchen" vertikal aufziehen. Sie können später mit Hilfe von Rückbezügen auf Teilübereinstimmungen zurückverweisen. Weitere Informationen zur Verwendung von Rückbezügen in regulären Ausdrücken finden Sie im Abschnitt Rückbezüge weiter unten. Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: (al.)..(L..) Treffer: allo Lab Teilübereinstimmung 1: all Teilübereinstimmung 2: Lab Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: (.(al.).).(L..) Treffer: Hallo Lab Teilübereinstimmung 1: Hallo Teilübereinstimmung 2: all Teilübereinstimmung 3: Lab
| Mit senkrechten Strichen lassen sich mögliche Treffer alternieren. Dieses Zeichen ist hilfreich, wenn Sie eine beliebige Anzahl von Zeichengruppen suchen möchten. Ein regulärer Ausdruck, der (|) enthält, gibt den ersten Treffer aus, der im Eingangs-String gefunden wird, unabhängig von der Reihenfolge der möglichen Treffer. So finden die beiden regulären Ausdrücke Hund|Katze und Katze|Hund den String Hund in der Hund jagte die Katze. Eingangs-String: Wert=FALSE Gesamt=12.34 Token=TRUERegulärer Ausdruck: (Wert|Token)=(TRUE|FALSE)Treffer: Wert=FALSETeilübereinstimmung 1: WertTeilübereinstimmung 2: FALSE Der reguläre Ausdruck gibt den ersten möglichen Treffer im Eingangs-String aus. Wenn Token=TRUE vor Wert=FALSE im Eingangs-String vorkommen würde, würde der reguläre Ausdruck stattdessen Token=TRUE ausgeben.
^ Verankert einen Suchausdruck mit dem Beginn eines Strings, wenn dieser als erstes Zeichen eines Musters verwendet wird. Wenn der Eingang Mehrzeilig? der Funktion "Regulären Ausdruck suchen" oder "String suchen und ersetzen" auf TRUE gesetzt ist, findet ^ den Anfang jeder Zeile innerhalb des Strings, wobei die Zeilenenden der aktuellen Plattform verwendet werden. Sie können auch jedes beliebige Zeichen suchen, das nicht in einer bestimmten Zeichenklasse enthalten ist, indem Sie ^ an den Anfang einer Zeichenklasse setzen. Zum Beispiel wird mit [^0-9] nach allen Zeichen gesucht, die keine Zahlen sind. [^a-zA-Z0-9] entspricht allen Zeichen, die keine Klein- oder Großbuchstaben und auch keine Ziffern sind. Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: ^[^]+ Treffer: Hallo Der reguläre Ausdruck findet so viele Zeichen wie möglich (mit Ausnahme des Leerzeichens) beginnend ab dem Eingangs-String. Mit Hilfe dieses regulären Ausdrucks können Sie das erste Wort, die erste Zahl oder die erste Zeichenkombination eines Strings isolieren. Eingangs-String: Hallo LabVIEWRegulärer Ausdruck: ^LabVIEWTreffer: LabVIEW Der reguläre Ausdruck findet LabVIEW nur, wenn Mehrzeilig? auf TRUE gesetzt ist.
$ Verankert einen Suchausdruck mit dem Ende eines Strings. Wenn der Eingang Mehrzeilig? der Funktion "Regulären Ausdruck suchen" oder "String suchen und ersetzen" auf TRUE gesetzt ist, findet $ das Ende jeder Zeile innerhalb des Strings, wobei die Zeilenenden der aktuellen Plattform verwendet werden. Eingangs-String: Hallo LabVIEW! Regulärer Ausdruck: [^]+$ Treffer: LabVIEW! Der reguläre Ausdruck findet so viele Zeichen wie möglich (mit Ausnahme des Leerzeichens) ab dem Ende des Eingangs-Strings. Mit Hilfe dieses regulären Ausdrucks können Sie das letzte Wort, die letzte Zahl oder die letzte Zeichenkombination eines Strings isolieren. Eingangs-String: Hallo LabVIEWRegulärer Ausdruck: Hallo$Treffer: Hallo Der reguläre Ausdruck findet Hallo nur, wenn Mehrzeilig? auf TRUE gesetzt ist.
\ Hebt die besondere Bedeutung eines Sonderzeichens in dieser Liste auf, das unmittelbar auf den Backslash folgt und findet stattdessen das literale Zeichen. Folgende konvertierte Ausdrücke haben besondere Bedeutungen:
  • \b - Stellt eine Wortbegrenzung dar. Eine Wortbegrenzung ist ein Zeichen, das kein Wortzeichen neben einem anderen Wortzeichen darstellt. Wortzeichen sind alphanumerische Zeichen oder ein Unterstrich (_). Zum Beispiel entspricht \bdruckdruck in drucken, aber nicht in bedruckt. druck\b entspricht druck in farbdruck, aber nicht in drucken. \bdruck\b entspricht druck in druck, aber nicht in bedrucken oder drucken.
  • \c - Stellt ein beliebiges Element oder nicht druckbares Zeichen dar; enthält jeden Codepunkt im Zeichensatz, der für nicht für ein geschriebenes Zeichen steht
  • \w - Stellt beliebige Wortzeichen dar; entspricht [a-zA-Z0-9_]
  • \W - Stellt beliebige Nicht-Wortzeichen dar; entspricht [^a-zA-Z0-9_]
  • \d - Stellt beliebige Zahlenzeichen dar; entspricht [0-9]
  • \D - Stellt beliebige Nicht-Zahlenzeichen dar; entspricht [^0-9]
  • \N - Stellt eine vorherige Teilübereinstimmung innerhalb desselben regulären Ausdrucks dar, wobei N eine Zahl ist. Weitere Informationen zur Verwendung von \N finden Sie im Abschnitt Rückbezüge weiter unten.
  • \s - Stellt beliebige nicht darstellbare Zeichen dar, z. B. Leerzeichen, Zeilenumbruch, Tabulator, Wagenrücklauf usw.
  • \S - Stellt beliebige von nicht darstellbaren Zeichen verschiedene Zeichen dar.
  • \n - Stellt das Zeilenumbruchzeichen dar.
  • \t - Stellt das Tabulatorzeichen dar.
  • \r - Stellt das Wagenrücklaufzeichen dar.
  • \f - Stellt das Seitenvorschubzeichen dar.
  • \031 - Stellt ein Oktalzeichen dar (in diesem Fall 31 oktal).
  • \x3F - Stellt ein Hexadezimalzeichen dar (in diesem Fall 3F hexadezimal).
Eingangs-String: Gesamt=$12,34 Regulärer Ausdruck: \$\d+(\.\d{2})? Treffer: $12,34 Mit dem Ausdruck \$ wird nach einem Dollarzeichen gesucht, da der Backslash die Sonderfunktion des Dollarzeichens aufhebt. Mit dem Ausdruck \d+ werden so viele Zahlen wie möglich gesucht – mindestens jedoch eine Zahl. Mit dem Ausdruck (\,\d{2})? werden ein . und zwei Zahlen gesucht, aber durch ? wird dieser Teil des regulären Ausdrucks optional. Mit diesem regulären Ausdruck können Sie beispielsweise Preisangaben in Dollars suchen, die einen Punkt (.) als Dezimalzeichen haben. Wenn Preise mit einem anderen Dezimalzeichen angegeben sind, muss der reguläre Ausdruck entsprechend angepasst werden. Eingangs-String: NEWtoken=FALSE token=TRUE checkFile=TRUE total=12.34 Regulärer Ausdruck: \btoken=\w+\s\b\S* Treffer: token=TRUE checkFile=TRUE Der reguläre Ausdruck findet token=FALSE nicht in NEWtoken=FALSE, weil mit \b der reguläre Ausdruck token= nur am Beginn des Worts gefunden wird. Der Ausdruck \w+ findet so viele Wortzeichen wie möglich und muss mindestens ein Wortzeichen finden. In diesem Beispiel wird mit \w+ der Treffer TRUE gefunden. Mit dem Ausdruck \s wird ein Leerzeichen gesucht. Der Ausdruck \b\S* findet alle darstellbaren Zeichen, die am Anfang eines Worts stehen, bis die Funktion ein anderes nicht darstellbares Zeichen findet. In diesem Beispiel findet \b\S* den Treffer checkFile=TRUE. Eingangs-String: Willkommen bei   LabVIEW! Regulärer Ausdruck: kommen\n\S*\t\w*\x21 Treffer: kommen bei   LabVIEW! Mit dem Ausdruck kommen\n werden die angegebenen Zeichen gefolgt von einem Zeilenumbruchzeichen gesucht. Der Ausdruck \S* findet so viele darstellbaren Zeichen wie möglich. In diesem Fall wird das Wort bei gefunden. Der Ausdruck \t findet das Tabulatorzeichen zwischen bei und LabVIEW!. Der Ausdruck \w* findet so viele Wortzeichen wie möglich. In diesem Fall wird LabVIEW gefunden. Der Ausdruck \x21 findet das Ausrufezeichen, da 21 der Hexadezimalcode für ein Ausrufezeichen ist.
Tipp Verwenden Sie zur Verankerung eines Suchausdrucks mit dem Anfang und Ende eines Strings das Exponentialzeichen (^ als erstes Zeichen und das Dollarzeichen ($) als letztes Zeichen im Suchmuster. So findet der Ausdruck ^LabVIEW$ z. B. den Treffer LabVIEW in LabVIEW, aber nicht in LabVIEW! oder Hallo LabVIEW. Beim Verankern eines Suchausdrucks mit dem Anfang und Ende eines Strings muss dieser vollständig mit dem Such-String übereinstimmen.

Sonderzeichen für den Eingang "Ersetzungs-String"

Verwenden Sie die folgenden Sonderzeichen für den Eingang Ersetzungs-String der Funktion "String suchen und ersetzen":

Sonderzeichen Beschreibung Beispiel(e)
$n oder ${n} Fügt den festgelegten String vor oder nach der festgelegten Teilübereinstimmung ein. Im Abschnitt Rückbezüge weiter unten finden Sie weitere Informationen zur Verwendung von Rückbezügen am Eingang Ersetzungs-String der Funktion "String suchen und ersetzen". Verwenden Sie ${n}, wenn Sie mehr als neun Teilübereinstimmungen in einem regulären Ausdruck haben und auf eine Teilübereinstimmung nach der neunten verweisen möchten. $12 fügt nur die erste Teilübereinstimmung ein, da die Funktion nur die erste Ziffer liest, die unmittelbar auf $ folgt. ${12} dagegen fügt die zwölfte Teilübereinstimmung ein. Eingangs-String : Welcome LabVIEWSuch-String : (LabVIEW)Ersetzungs-String : to $1!Ergebnis-String : Welcome to LabVIEW!Eingangs-String : Welcome to the LabVIEW Help!Such-String : We(l)(co(m)e)( )(to)( )t(he) (Lab)(VIE(W)) He(lp)(!)Ersetzungs-String : $7${11}ful${12}Ergebnis-String : helpful!
\$n Bricht die Interpretation aller Sonderzeichen im Ersetzen-String ab. Eingangs-String : gesamt=123 pro TagSuch-String : (\d+)(pro \w*)?Ersetzungs-String : \$1$2Ergebnis-String : gesamt=$123 pro Tag Das Dollarzeichen, $, wird in diesem Beispiel mit Hilfe von \$ eingefügt. Mit \\ wird nach einem Backslash gesucht.

Rückbezüge

Mit Hilfe von Rückbezügen können Sie auf vorherige Teilübereinstimmungen im selben regulären Ausdruck verweisen. Mit Hilfe von Rückbezügen können Sie eine Teilübereinstimmung mit Hilfe einer Zeichengruppe in einem Teil des Ausdrucks erzielen und diese Teilübereinstimmung in einem späteren Teil des Ausdrucks finden.

Um Rückbezüge am Eingang Regulärer Ausdruck der Funktion "Regulären Ausdruck suchen" oder am Eingang Such-String der Funktion "String suchen und ersetzen" festzulegen, verwenden Sie \1 für die erste Teilübereinstimmung, \2 für die zweite usw. Beispiel:

(["*$])(\w+)\1\2\1

Die erste Zeichengruppe enthält eine Zeichenklasse, mit der ", * oder $ gefunden wird. Die zweite Zeichengruppe findet mindestens ein Wortzeichen. Der erste Rückbezug, \1, findet die gleiche Teilübereinstimmung wie die erste Zeichengruppe, (["*$]). Der zweite Rückbezug, \2, findet die gleiche Teilübereinstimmung wie die zweite Zeichengruppe, (\w+). Der dritte Rückbezug, \1, ist identisch mit dem ersten Rückbezug und findet die gleiche Teilübereinstimmung wie die erste Zeichengruppe.

In diesem Beispiel werden Strings wie "foo"foo", *bar*bar* und $baz$baz$ gefunden. Strings wie "foo$foo" oder "foo*bar" werden nicht gefunden.

Rückbezüge in "Ersetzungs-String"

Bei Verwendung der Funktion "String suchen und ersetzen" im Modus Regulärer Ausdruck können Sie einen Rückbezug am Eingang Ersetzungs-String festlegen, der auf den Eingang Such-String verweist. Mit Hilfe von $1 kann ein Bezug zur ersten Teilübereinstimmung hergestellt werden, mit $2 kann auf die zweite Teilübereinstimmung verwiesen werden usw. Diese Sonderzeichen können nur am Eingang Ersetzungs-String der Funktion "String suchen und ersetzen" verwendet werden. Verwenden Sie diese Sonderzeichen, um einen von Ihnen angegebenen String vor oder nach dem Suchbegriff einzufügen. Anwendungsbeispiel:

Eingangs-String : $value "TRUE"TRUE" *NULLSuch-String : (["*$])(\w+)\1\2\1Ersetzungs-String : $1$2value$1Ergebnis-String : $value "TRUEvalue" *NULL

In diesem Beispiel beziehen sich die Rückbezüge $1 in Ersetzungs-String auf die erste Teilübereinstimmung in Such-String. Der Rückbezug $2 steht entsprechend für die zweite Teilübereinstimmung in Ersetzungs-String.