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!
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
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
SUPER, es hat geklappt! Vielen Dank an Euch! das mit dem "+?" anstatt "*" war die lösung!
Schönen Abend