regex.replace

Conners

Erfahrenes Mitglied
Hi,

ich hab irgendwo gelesen, dass man auch mit einem Regex-Objekt mehrere Änderungen vornehmen kann.
Ich kriegs nicht hin; ich erstell zur Zeit für 6 Änderungen 6 Regex-Objekte.

Mein Code sieht so aus:

Ich hab auch einige Anführungszeichen in den Strings drin, dafür musste ich extra vorher ein string-Objekt erstellen, weil ichs nicht in der Regex-Schnittstelle übergeben konnte

Code:
            Regex r1 = new Regex(@"string1");

            string aa = "text\"text\"";
            Regex r2 = new Regex(@aa);

            string bb = "text\"text\"";
            Regex r3 = new Regex(@bb);

            string cc = "text\"text\"";
            Regex r4 = new Regex(@cc);

            string dd = "text\"text\"";
            Regex r5 = new Regex(@dd);

            string ee = "text\"text\"";
            Regex r6 = new Regex(@ee);

            string ff = "text\"text\"";
            Regex r7 = new Regex(@ff);

            string tmp = r1.Replace(myWebBrowser.DocumentText, "");
            tmp = r2.Replace(tmp, "newstring");
            tmp = r3.Replace(tmp, "newstring2");
            tmp = r4.Replace(tmp, "newstring3");
            tmp = r5.Replace(tmp, "newstring4");
            tmp = r6.Replace(tmp, "newstring5");
            tmp = r7.Replace(tmp, "newstring6");
            myWebBrowser.DocumentText = tmp;

Wie kann ich das komprimieren :) ?

Gruß
Conners
 
ehm hast du bessere Beispiel ?
immer das text\"text macht es schwer wirklich einen Anwendungsfall zu sehen.

Und es wird immer mit dem gleichen Wert überschrieben?

dann könntest du sowas in der Art probieren
Code:
string s=Regex.Replace(meinText,"string1|text\"text\"|text\"text\"",tmp);
Halt einfache Oder Vergleiche ( | )

So ungefähr halt :rolleyes:
 
hi, sorry kann erst jetzt antworten.

Ne es wird nie mit dem gleichen String ersetzt. Sowohl pattern, als auch replacement sind immer verschieden.

Außerdem ist die Reihenfolge auch von Bedeutung. Also der letzte Ersetzungsschritt, z.B., darf erst stattfinden, wenn alle anderen schon fertig sind.

EDIT: Hab grad irgendwo gelesen, dass man für jedes Regex einen spezifischen pattern benötigt.

Somit stellt sich für mich eigtl. nur noch eine Frage.
Wieso geht das:
string a = "\"";
Regex r = new Regex(@a);

aber nicht das:
Regex r = new Regex(@"\"");
 
Zuletzt bearbeitet:
arg jetzt hatte ich sone gute Erklärung und mein Rechner ist abgeschmirt :mad:
Ich versuchs nochmal hinzukriegen

Der Schrägstrich selbst ist erstmal ein reserviertes Zeichen.
Ich nenns mal Zuweisungsoperator.
Sprich:
\t - steht für Tabulator
\n - steht für neue Zeile
\" - steht für "

Wird dem String nun ein @ angehängt verliert der \ seine Eigenschaft als reserviertes Zeichen und wird normal wie jedes andere Zeichen behandelt.

aber nicht das:
Regex r = new Regex(@"\"");
Wie gesagt hier wurde @ angehängt und somit wird \ als normales Zeichen behandelt.
Dein Regex Parameter sieht eigentlich wie folgt aus:
[String Beginn] Text [String Ende] [String Beginn]

Wieso geht das:
string a = "\"";
Regex r = new Regex(@a);
In diesem Fall hat das @ garkeine Auswirkung da es auf Objektinstanzen selbst nicht wirkt. @ Bekommt seine Bedeutung erst durch die Stringzuweisung mit Hilfe von ""

Puh habs so halbwegs wieder hinbekommen und hoffe ist irgendwie verständlich.
 

Neue Beiträge

Zurück