regcomp Pattern



  • Hallo,

    ich versuche einen Ordner mit allen Datien, die dem Muster:
    @,,.ps entsprechen zu finden.

    Dafür verwende ich regcomp

    if (regcomp(&spattern, "@.*.ps", REG_EXTENDED)) {
      cout << "Fehler "<<endl;
    

    Sicherlich stimmt das Pattern "@.*.ps" nicht wirklich..
    Irgendwie wird mir aber unter http://www.manpagez.com/man/7/re_format/ nichts wirklich klarer zur korrekten Verwendung.
    Hat jemand einen Tipp für eine gute Erläuterung zu diesem Thema bzw. kurzfristig, eine vernüftige Pattern anstelle von meiner?

    Danke Tim



  • achso eine Beispieldatei würde heissen:
    ab@cde,fgh,ijk.ps



  • .*@.*,.*,.*\.ps
    

    ?



  • Zwei Sachen verstehe ich nicht:

    1. Wenn du dein Problem mit Wildcards darstellen kannst, nehm doch einfach einen Wildcard-Vergleich.
    2. Warum programmierst du hier plattformabhängig? Regex-Krams gibt's z.B. auch unter Boost, dann bist du nicht auf POSIXe festgenagelt.


  • Danke für die Antworten, mir war nicht ganz bewusst, dass POSIX plattformabhängig ist, ich dachte es sei genau umgekehrt.
    Mir geht es gerade um Unabhängigkeit, da es unter SunOS (Unix) und Linux vor allem laufen soll.
    Wie sieht dass ganze denn unter Boost bzw. Wildcard Vergleich aus?



  • Tim.2001 schrieb:

    Danke für die Antworten, mir war nicht ganz bewusst, dass POSIX plattformabhängig ist, ich dachte es sei genau umgekehrt.

    Ne, POSIX ist zwar ein Standard, wird aber von einigen Unix-Derivaten und Windows nur teilweise unterstützt (siehe auch Wikipedia).
    Wenn deine Software definitiv nur unter SunOS und Linux laufen soll und die Funktion "regcomp" von beiden unterstützt wird, ist es natürlich nicht verkehrt, sie auch zu benutzen. Mit plattformabhängigkeit baut man sich sonst aber oft Steine in den Weg.

    Tim.2001 schrieb:

    Wie sieht dass ganze denn unter Boost bzw. Wildcard Vergleich aus?

    Für boost siehe hier.
    Für Wildcard-Vergleiche googelst du kurz nach "Wildcard match", da gibt's genug Algorithmen (z.B. hier).


Anmelden zum Antworten