Ich habe eine Zeichenfolge getaggten Inhalten mit ähnlichen Mustern enthält wie unten:Wie extrahiert man mehrere Teilstrings aus C# String?
This is a <ss type="">(example)</ss> string which <ss type="">(contains)</ss> tagged contents.
Erwartetes Ergebnis ist:
This is a <ss type="example">(example)</ss> string which <ss type="contains">(contains)</ss> tagged contents.
Ich habe versucht, durch RegularExpression
Liste von markierten Inhalten zu extrahieren und extrahiert haben, die Liste der Tag-Texte, und setzen Sie den Tag-Text in den Anführungszeichen als Wert von type
, und ersetzt die neue Zeichenfolge durch die alte.
Aber das Problem ist, da die Regex.Replace();
wird nach dem gleichen Regex
Muster, es werden alle getaggten Inhalten mit dem letzten Element des Tags Inhalte ersetzt Liste wie unten:
This is a <ss type="contains">(contains)</ss> string which <ss type="contains">(contains)</ss> tagged contents.
Mein Arbeits Code ist unten :
StringBuilder resultText= new StringBuilder(@"This is a <ss type="">(example)</ss> string which <ss type="">(contains)</ss> tagged contents.");
string overallPattern = @"<ss\stype=""([a-zA-Z]*)"">(.*?)</ss>";
List<string> matchList = new List<string>();
List<string> contentList = new List<string>();
StringBuilder sb;
Regex overallRegex = new Regex(overallPattern, RegexOptions.None);
string resultContent = resultText.ToString();
foreach (Match match in overallRegex.Matches(resultContent))
{
string matchResult = match.ToString();
matchList.Add(matchResult);
string content = matchResult.Split('(', ')')[1];
contentList.Add(content);
}
for (int j = 0; j < matchList.Count; j++)
{
sb = new StringBuilder();
sb.Append(matchList[j].Insert(10, string.Format(contentList[j])));
resultContent = Regex.Replace(resultContent, overallPattern, sb.ToString());
resultText = new StringBuilder();
resultText.Append(resultContent);
}
Meine Frage ist:
Wie kann ich den richtigen Tag-Text in sein Doppelzitat nach Auftrag eingeben?
Haben Sie Ihren RegexMuster geprüft Wie ich es sehe ist nichts passende –
Ok der Grund Dies ist ein die Muss sein Dies ist ein . Ich habe Ihre Frage bereits bearbeitet –
@ S.Petrosov Danke für Ihre Mühe. Es passt. Tatsächlich kommt die Saite von woanders mit Double-Quote-Escapes wie '\". Ich denke, es ist dasselbe wie deins. Die obige Saite dient nur zur Demonstration. –