Regex in C # - Wie ersetze ich nur eine bestimmte Gruppe in Match?

7

Ich analysiere einen Text mit C # regex. Ich möchte nur eine bestimmte Gruppe für jedes Spiel ersetzen. Hier, wie ich es mache:

%Vor%     
Alan Coromano 22.10.2012, 06:35
quelle

6 Antworten

10

Das sollte es tun:

%Vor%

Beispiel: Ссылка

BEARBEITEN: Obwohl das Obenstehende die Antwort auf Ihre Frage ist, wie Sie es geschrieben haben, können Sie für Ihr tatsächliches Szenario Suchpfade mit einer Breite von Null einfacher finden:

%Vor%

Beispiel: Ссылка

    
Justin Morgan 22.10.2012, 07:28
quelle
4

Sie können MatchEvaluator verwenden: Versuche dies.

%Vor%

Ich habe einen Beitrag im Stackoverflow gefunden: Dies

    
Bhavik Patel 22.10.2012 06:51
quelle
4

Wie wäre es damit?

%Vor%     
mlorbetske 22.10.2012 06:55
quelle
2

Regex.Replace ersetzt immer alles, was die bereitgestellte Regex gefunden hat .

Sie haben zwei Möglichkeiten:

  1. Entsprechen Sie nur dem, was Sie ersetzen möchten

    oder

  2. Fügen Sie die Teile der ursprünglichen Zeichenfolge, die gefunden wurde, aber beibehalten werden soll, in die Ersetzungszeichenfolge ein, indem Sie Erfassungsgruppen verwenden.

Sie haben nicht genügend Informationen zur Verfügung gestellt, um Ihre Frage spezifischer beantworten zu können. Z.B. Brauchst du wirklich ein MatchEvaluator ? Dies ist nur erforderlich, wenn Sie für jede Übereinstimmung eine individuelle Ersetzungszeichenfolge bereitstellen möchten.

    
stema 22.10.2012 06:57
quelle
0
%Vor%     
Raymond 26.06.2017 19:15
quelle
0

Der folgende Code nimmt eine Übereinstimmung und erstellt eine Ersatzzeichenfolge basierend auf der groupValues-Auflistung. Diese Auflistung gibt einen Gruppenindex und den zu ersetzenden Text an.

Im Gegensatz zu anderen Lösungen muss die gesamte Übereinstimmung nicht in Gruppen enthalten sein, sondern nur die Teile der Übereinstimmung, die Sie in Gruppen haben möchten.

%Vor%     
Mr Universe 20.07.2017 00:03
quelle

Tags und Links