这是使用正则表达式的解决方案。此表达式的匹配项同时捕获示例中的 COLOR 标记和 TH 标记。
<color>[^<]+</color>\s*<th>MSOA(\w+)</th>
第一个捕获组包含 4 位 MSOA 代码。然后,您可以用具有所需更新值的新标签替换整个匹配项。这是我在 LINQPad 中测试的 C# 示例。
void Main() {
string inputString = @"
<color>ff0780dd</color>
<th>MSOA11CD</th>
<td>E02001618</td>";
string result = Regex.Replace(inputString, @"<color>[^<]+</color>\s*<th>MSOA(\w+)</th>", new MatchEvaluator(ComputeReplacement), RegexOptions.IgnoreCase | RegexOptions.Multiline);
Console.Out.WriteLine(result);
}
public String ComputeReplacement(Match m) {
const int GRP_MSOA_CODE = 1;
string msoaCode = m.Groups[GRP_MSOA_CODE].Value;
string colorCode = "SOME COLOR CODE"; //Get the code to use between the "color" tags from your DB.
return String.Format("<color>{0}</color>\n<th>MSOA{1}</th>", colorCode, msoaCode);
}