webentwicklung-frage-antwort-db.com.de

Regulärer Ausdruck für C #, der mit jedem Zeichen übereinstimmt?

In C # schreibe ich die folgende Zeichenfolge in eine Zeichenfolgenvariable, Wagenrücklauf und alle:

asdfasdfasdf
asdfas<test>asdfasdf

asdfasdf<test>asdfasdf

In Notepad2 verwende ich diesen regulären Ausdruck:

<test>.*<test>

Es wählt diesen Text wie erwartet aus:

<test>asdfasdf

asdfasdf<test>

Wenn ich dies jedoch in C # mache:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty);

Der String wird nicht entfernt. Wenn ich diesen Code für eine Zeichenfolge ohne Wagenrücklauf ausführen, funktioniert er jedoch.

Was ich also suche, ist ein Regex, der mit JEDEM Zeichen übereinstimmt, unabhängig davon, ob es sich um einen Steuercode oder einen regulären Buchstaben handelt.

30

Sie haben vergessen zu spezifizieren, dass die Regex-Operation (insbesondere der .-Operator) mit all Zeichen (nicht allen Zeichen außer \ n) übereinstimmen sollte:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty, RegexOptions.Singleline);

Alles was Sie hinzufügen mussten war RegexOptions.Singleline.

50
qJake

Single-Line-Modus verwenden:

Regex.Replace(s, "<test>.*<test>", "", RegexOptions.Singleline);
11
Blindy

Sie könnten die Wagenrückläufe in der Zeichenfolge entfernen und dann Ihren Abgleich durchführen:

s = s.Replace(Environment.NewLine, "");

Dann sollte es wie erwartet funktionieren:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty);
0
vapcguy