2009-03-09 16 views
2

Verwendung habe ich einen String-Eingang zu meinem Programm der Form:..ein Sed-äquivalent in einem C-Programm

con * .cc

Ich möchte dies den regulären Ausdruck darzustellen, con * cc.

Wie kann ich dies in einem C-Programm tun? Gibt es sowas wie sed, das ich benutzen kann?

+0

Es ist nicht klar, was Sie suchen. Möchten Sie, dass Ihr C-Programm mit regulären Ausdrücken umgehen kann? Eine Art Bibliothek für reguläre Ausdrücke? Übrigens, dein regulärer Ausdruck ist falsch. du musst der zweiten entkommen. – Trent

Antwort

4

Ich vermute, Sie wollen wirklich nur globbing eher als auf regulären Ausdrücken voll. Wenn Sie unter Linux arbeiten, können Sie die Funktion glob verwenden. Ich kann mir vorstellen, dass es einen leichteren Weg gibt, aber ich weiß nichts davon.

2

Sie könnten PCRE für die Übereinstimmung mit regulären Ausdrücken verwenden. Der eigentliche Ausdruck könnte als char-Array gespeichert werden (wie jede andere Zeichenfolge).

1

Was genau möchten Sie mit diesem Regex tun? Unter der Annahme, dass Sie nach einer Reihe von Strings suchen möchten, die Sie bereits in Ihrem Code haben, müssen Sie eine Regex-Bibliothek verwenden. C unterstützt native reguläre Ausdrücke nicht. Schauen Sie in der gcc-Anleitung nach - here.

0

Verwenden sed aus Ihrem Programm:

  1. fork()
  2. Satz stdin/stdout in Kindprozess
  3. exec (sed s/X/Y /) in dem Kind (oder was auch immer Betreiben Sie mögen)
  4. Mutter Daten in sed drückt, liest Daten aus sed
  5. Eltern sed erntet, wenn
  6. getan
1

This page beschreibt den < regex.h> Header, die Unterstützung POSIX reguläre Ausdrucks implementiert für C. Um dies zu nutzen, tun Sie gerade:

#include <sys/types.h> 
#include <regex.h> 

Sie sind ziemlich nett und einfach, mit zu arbeiten, aber wie @ Chickencha sagte in einer anderen Antwort, es sieht so aus, als ob du nur nach Globbing-Dateinamen suchst, und keinen echten regulären Ausdruck matchst. Ich dachte nur, ich würde darauf hinweisen, dass C tatsächlich reguläre Ausdrücke unterstützt, da niemand es getan hat.