Binärer Regex (mit VS2008)



  • Ich habe folgendes Problem:
    Ich will eine Datei (Binäres format, also sind alle Zeichen, auch 00 drin) nach bestimmten Strings durchsuchen.
    Damit ich nicht manuell alle Kombinationen durchsuchen muss, wäre ein Regexp gut.
    Nur habe ich ich in C++ (Bin neu hier) noch nie Regexp verwende, also 1. Frage: Wie/Welche Regexp kann ich verwenden (habe VS2008)
    Am besten wäre hier auch ein submatching, muss aber nicht zwingend sein.
    2.Frage: Wie kann ich Regexp für mein Problem anwenden,da normale Strings doch durch das 00 beendet würden?

    Mein Projekt ist eine MFC-Anwendung. Für Strings verwende ich CString. (Hab das Projekt nur fortgeführt, darum habe ich das gleich so übernommen)



  • Flamefire schrieb:

    da normale Strings doch durch das 00 beendet würden?

    Das ist so nicht richtig, normale strings werden in der Regel durch 00000000 beendet.



  • Programmieren die von Mathe keine Ahnung haben. log(0) kannste gern mal ausrechnen. Ist nicht definiert (Auch wenn man 0^x=0 nehmen KANN)

    Ok Spaß beiseite, ich habe NICHT gefragt, wie die Strings terminiert werden, sondern wie ich regexp verwende. Und erweitert noch wie ich regexp auf etwas anwende, das kein "normaler String" ist. In perl z.B. geht das. Wie geht es in C++?

    Edit: Oh, er hat das log(0) bemerkt 😉



  • Flamefire schrieb:

    Wie geht es in C++?

    In Standard-C++ gibt es keine Regexp, insofern müsstest du die Dokumentation der verwendeten Bibliothek konsultieren.

    Ein Nullbyte kannst du mit \0 angeben. Du kannst auch beliebige Bytewerte in Strings mit dem "\x"-Präfix, gefolgt von der gewünschten Zahl als Hexadezimalzahl notieren: \x00 für ein Nullbyte.



  • Flamefire schrieb:

    Edit: Oh, er hat das log(0) bemerkt 😉

    Ich hol mir'n Kaffee. 😃

    EDIT:
    wobei für x > 0 gilt:
    0^x = 0
    und
    0^0 = 1

    Aber lassen wir das^^.



  • Nukularfüsiker schrieb:

    In Standard-C++ gibt es keine Regexp, insofern müsstest du die Dokumentation der verwendeten Bibliothek konsultieren.

    Ein Nullbyte kannst du mit \0 angeben. Du kannst auch beliebige Bytewerte in Strings mit dem "\x"-Präfix, gefolgt von der gewünschten Zahl als Hexadezimalzahl notieren: \x00 für ein Nullbyte.

    Das ist ja mein Problem: Ich brauche eine Regexp-Bibliothek, die mit diesen "seltsamen" Strings umgehen kann. Und ein Beispiel, wie ich die verwende.

    Edit: hab gerade durch Zufall was gefunden. Nennt sich DEELX Header und ist genau das was ich suche 🙂
    Hat sich also erledigt.


Anmelden zum Antworten