Regulären Ausdruck suchen
- Aktualisiert2025-07-30
- 4 Minute(n) Lesezeit
Sucht beginnend beim angegebenen Offset nach einem regulären Ausdruck im Eingangs-String. Wenn die Funktion eine Übereinstimmung findet, teilt sie den String in drei Teile und die jeweils gefundenen Teiltreffer auf. Um alle Teiltreffer im String sehen zu können, müssen Sie die Funktion eventuell aufziehen.

Ein-/Ausgänge
Mehrzeilig? (F)
—
Schreibweise ignorieren (F)
—
Eingangs-String
—
Regulärer Ausdruck
—
Offset (0)
—
Offset specifies the number of characters into Eingangs-String at which the function starts searching for Such-String.
Fehler (Eingang)
—
Vor Übereinstimmung
—
Komplette Übereinstimmung
—
Nach Übereinstimmung
—
Offset nach Übereinstimmung
—
Fehler (Ausgang)
—
|
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 mit Perl kompatiblen regulären Ausdrücken erhalten Sie auf der PCRE-Website unter www.pcre.org.
Die Funktion "Regulären Ausdruck suchen" hat mehr Optionen, ist aber bedeutend langsamer als die Funktion Muster suchen.
Zur Eingrenzung der Suche verwenden Sie in der Funktion reguläre Ausdrücke.
Vermeiden von Stack-Überlauf
Bei bestimmten regulären Ausdrücken, die wiederholte gruppierte Ausdrücke verwenden (z. B. (.|\s)* oder (a*)*), werden bei der Suche in langen Eingangs-Strings beträchtliche Ressourcen benötigt. In einigen Fällen kann es in langen Eingangs-Strings zu einem Stack-Überlauf kommen. Das liegt daran, dass manche regulären Ausdrücke wiederholt rekursiv ausgerufen werden, während LabVIEW nach dem langen String sucht. Das bringt den Stack dann zum Überlauf. So kann z. B. der reguläre Ausdruck (.|\n)*A zusammen mit einem langen String zu einem solchen LabVIEW-Absturz führen. Zur Vermeidung rekursiver Aufrufe kann (.|\n)*A in (?s).*A geändert werden. (?s) bedeutet, dass mit einem Punkt nach einer neuen Zeile gesucht wird. Der Ausdruck kann auch in der Form [^A]*A angegeben werden.
Gruppieren von Mustern für Teilübereinstimmungen
Sie können Teilübereinstimmungen erfassen, indem Sie Klammern ( ) um den Teil eines regulären Ausdrucks setzen, den die Funktion als Teilübereinstimmung ausgeben soll. Der reguläre Ausdruck (al.)..(L..) gibt z. B. zwei Teilübereinstimmungen im Eingangs-String Hallo LabVIEW! aus: all und Lab. Jede Teilübereinstimmung entspricht einer Zeichengruppe in der Reihenfolge, in der die Zeichengruppe im regulären Ausdruck vorkommt. In diesem Beispiel ist die Teilübereinstimmung 1 gleich all und die Teilübereinstimmung 2 ist Lab.
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. Der reguläre Ausdruck (.(al.).).(L..) gibt z. B. drei Teilübereinstimmungen im Eingangs-String Hallo LabVIEW! aus: Hallo, all und Lab. In diesem Beispiel ist die Teilübereinstimmung 1 gleich Hallo, da der reguläre Ausdruck zuerst einen Treffer mit der äußeren Zeichengruppe und dann mit der inneren Zeichengruppe erzielt.
Beispiele für reguläre Ausdrücke
In der Tabelle sehen Sie Beispiele für reguläre Ausdrücke, die für die Funktion "Regulären Ausdruck suchen" zulässig sind.
| Zu suchende Zeichen | Regulärer Ausdruck |
|---|---|
| VOLT | VOLT |
| Ein Plus- oder Minuszeichen | [+-] |
| Eine Ziffernfolge oder eine einzelne Ziffer | [0-9]+ |
| Eine beliebige Anzahl von Leerzeichen einschließlich null | \s* oder * (eine Leerstelle gefolgt von einem Sternchen) |
| Ein oder mehrere Leerzeichen, Tabulatoren, Zeilenumbrüche oder Wagenrückläufe | [\t \r \n \s]+ |
| Ein oder mehrere Zeichen mit Ausnahme von Ziffern | [^0-9]+ |
| Das Wort Pegel, aber nur, wenn es am Anfang des Strings steht | ^Pegel |
| Das Wort Volt, nur wenn es am Ende des Strings steht | Volt$ |
| Die längste Zeichenfolge innerhalb der runden Klammern | \(.*\) |
| Die erste Zeichenfolge innerhalb der runden Klammern, die jedoch selbst keine runden Klammern enthält | \([^()]*\) |
| Eine linke eckige Klammer | \[ |
| Eine rechte eckige Klammer | \] |
| cat, cag, cot, cog, dat, dag, dot und dog | [cd][ao][tg] |
| cat oder dog | cat|dog |
| dog, cat dog, cat cat dog,cat cat cat dog usw. | ((cat )*dog) |
| Ein a oder mehrere gefolgt von einem Leerzeichen und derselben Anzahl der Buchstaben a, d. h. a a, aa aa, aaa aaa usw. | (a+) \1 |
Mehrzeilig? (F)
—
Eingangs-String
—
Offset (0)
—
Fehler (Eingang)
—
Vor Übereinstimmung
—
Offset nach Übereinstimmung
—
Fehler (Ausgang)
—