Laden...

[Regex] Regex für /* ... */ Kommentare

Erstellt von 3Star vor 14 Jahren Letzter Beitrag vor 14 Jahren 879 Views
3
3Star Themenstarter:in
12 Beiträge seit 2009
vor 14 Jahren
[Regex] Regex für /* ... */ Kommentare

Guten Aben zusammen

Ich habe ein Problem mit diesem Regex:

reg = new Regex(@"\/\*[ !{}""\?'\\#:\|\[\]\^\+\=öäüÖÄÜ\=&;,*@\(\)%a-zA-Z0-9\/\\\._~-]*\*\/");

Dieser soll in diesen Text:

 string s = "unwichtig";

    /* text text text text text text text text text text text text text text 
     * text text text text text text text text text text text text text text 
     * text text text text text text text text text text text text text text */

    int i = 20;

    /* text text text text text text text text text text text text text text text */

Die kommentarteile erkennen. Der Regex ignoriert aber in diesem fall das " int i = 20;", und erkennt dieses auch als Match. Kann mir jemand weiterhelfen?

Vielen dank!

946 Beiträge seit 2008
vor 14 Jahren

Wir produzieren dir keine Pattern 😉

Die umschliessenden "/" und "/" hast du ja richtig erkannt (nur noch das Escape-Zeichen vor dem Slash muss weg).

Für "alle Zeichen" musst du aber nicht alle dir bekannten auflisten.
Mir fällt zwar nur grad ein "\d\D" zu machen (hab da grad ein Blackout), aber jedenfalls kannst und solltest du diese komplett ersetzen.
Ich meine [ !{}""?'\#:|[]^+=öäüÖÄÜ=&;,*@()%a-zA-Z0-9/\._~-]

EDIT: Das wichtigste habe ich vergessen: Statt dem "*" musst du ein "+?" einsetzen.
Mehr dazu siehst du im [Artikel] Regex-Tutorial, bzw. testen kannst du im On-the-fly Regex-Tester: Regex-Lab.

mfg
SeeQuark

1.002 Beiträge seit 2007
vor 14 Jahren

Hallo 3Star,

versuch doch mal folgende Regex (ungetestet):

reg = new Regex(@"\/\*[ !{}""\?'\\#:\|\[\]\^\+\=öäüÖÄÜ\=&;,*@\(\)%a-zA-Z0-9\/\\\._~-]*?\*\/");

Durch das Fragezeichen am Ende wird der Greedy-Modus für den Klammerteil deaktiviert.

Du solltest dir allerdings überlegen, ob du nicht den Mittelteil eleganter umgestaltest, da du auf diese Art und Weise alle Zeichen kennen musst, die erkannt werden sollen.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

3
3Star Themenstarter:in
12 Beiträge seit 2009
vor 14 Jahren

SUPER, es hat geklappt! Vielen Dank an Euch! das mit dem "+?" anstatt "*" war die lösung!

Schönen Abend