2016-08-04 16 views
-2

Ich bin Anfänger in C-Programmierung. Ist es möglich, Muster innerhalb der C-Zeichenfolge wie alle eingebauten Funktionen abzustimmen?Kann ich den Mustervergleich im C-Programm verwenden?

Ich verwende Red Hat Linux und ich möchte überprüfen, ob eine Zeichenfolge mit abc: oder def: gefolgt von 10 Ziffern @ Zeichen beginnt. Etwas wie: (abc|def):([0-9]{10})@([A-Za-z0-9]*).

Gibt es eine eingebaute C-Funktion, die ich verwenden kann, um dieses Mustervergleich zu überprüfen.

Danke für Ihre Hilfe.

Antwort

1

Sie können den POSIX-Regex-Abgleich unter Linux verwenden. Siehe Man 3 Regex für weitere Details. Wenn Sie nach einer schnellen, sicheren und threaded Bibliothek suchen, können Sie die re2 library von Google mit Unterstützung wie vorkompilierter Regex verwenden.

0

Linux und POSIX haben regex(3) Funktionen. Sie müssen "kompilieren" -das ist Vorbereitung durch Transformieren- Ihre regulären Ausdruck Zeichenfolge mit regcomp zuerst.

In einigen einfachen Fällen, könnte man auch andere String-Funktionen, wie strstr, strchr, sscanf(3) (der %n Formatspezifizierer könnte praktisch sein, zu wissen, wie viel Bytes, die Sie gescannt haben) verwenden.

Sie könnten auch ein lexing-Dienstprogramm in Betracht ziehen, das möglicherweise flex verwendet, um einen Tokenizer zu generieren, der Ihre Regexp erkennen kann.