C# RegEx greift nicht

Ghost_Rider_R

Lieutenant
Registriert
Nov. 2009
Beiträge
752
Hallo zusammen,

Ich habe ein Regex-Statement hier erstellt, welches mir das korrekte Mapping anzeigt:

https://regex101.com/r/Wx5pLB/1

Dieses soll die Leerzeichen am Anfang und am Ende jeder Zeile maskieren.

Wenn ich in C# nun diese Zeichen entferne, dann passiert genau gar nichts:
string neu = Regex.Replace(sqlAbfrage, @"(^ +| +$)", "");

Was mache ich falsch?

LG Ghost
 
Hi,

keine direkte Antwort, aber warum nutzt du nicht "trim()"? Das sollte doch die Leerzeichen am Anfang und am Ende vom String entfernen. Oder verstehe ich die Anforderung gerade nicht / falsch?

VG,
Mad
 
  • Gefällt mir
Reaktionen: Ghost_Rider_R
Da du das zeilenbasiert haben willst, musst du auch das m-Flag setzen, damit ^ und $ pro Zeile und nicht pro String gelten. Geh mal in deinem Link links unten auf Code Generator und wähl dann C# aus.
 
  • Gefällt mir
Reaktionen: Ghost_Rider_R
Hi Mad,

doch das hatte ich auch erst und funktioniert tadellos. Ich bin nur gerade im RegEx Fieber und will mich da ein bisschen fit machen.

Ich habe die Lösung auch schon gefunden, so geht es:
Regex.Replace(sqlAbfrage, @"(^ +| +$)", "", RegexOptions.Multiline);

@Yuuri Das ist des rätsels Lösung. Kannst du mir noch sagen, wie ich den Parameter dann direkt in der Abfrage eingeben kann? oder ist das nicht Teil des Pattern und es muss so übergeben werden:
Regex.Replace(sqlAbfrage, @"(^ +| +$)", "", RegexOptions.Multiline);
 
  • Gefällt mir
Reaktionen: Madman1209
Ghost_Rider_R schrieb:
Kannst du mir noch sagen, wie ich den Parameter dann direkt in der Abfrage eingeben kann? oder ist das nicht Teil des Pattern und es muss so übergeben werden:
Regex.Replace(sqlAbfrage, @"(^ +| +$)", "", RegexOptions.Multiline);
Man kann mache Flags auch Inline-Angeben: Optionen für reguläre Ausdrücke

Bei dir wäre das dann Regex.Replace(sqlAbfrage, @"(?m)(^ +| +$)", "");
RegexOptions sind meiner Meinung nach aber erheblich lesbarer.
 
  • Gefällt mir
Reaktionen: Ghost_Rider_R
Ja damit scheint alles zu funktionieren. Noch eine Verständnisfrage, kann man bei RegEx immer nur eine Option angeben oder könnte man auch mehrere kombinieren? (dann ließe sich ja Multi und Singeline kombinieren?!)
Ergänzung ()

Tante Google kennt wie immer die Lösung:

Regex.Replace("aa cc bbbb", "aa cc", "",RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);

Vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Madman1209
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Ghost_Rider_R

Ähnliche Themen

Zurück
Oben