Regex应该替换xml文件中的内容,而不是标签名称

本文关键字:标签名 替换 xml 文件 Regex | 更新日期: 2023-09-27 17:50:12

请看下面的代码:

Match match = Regex.Match(doc.OuterXml, "''b" + l_sOldvalue + "''b");
if ((match.Success) && (l_bflag))
{
    string pattern = "''b" + l_sOldvalue + "''b";
    string l_sChangexml = Regex.Replace(doc.OuterXml, pattern, l_sNewValue);
    doc.LoadXml(l_sChangexml);
}

这里我使用RegEx匹配和替换,但它也替换了标签名称。对我来说,标签名不应该被替换。

医生。Outerxml -->包含完整的XML文件

有谁能解决这个问题吗?

Regex应该替换xml文件中的内容,而不是标签名称

你想在你的正则表达式中使用"负向后看"。例如,如果您想确保不捕获像<blafasel></blafasel>这样的标记,而是捕获所有出现的blafasel作为单个单词,请使用以下模式:

var pattern = @"(?i)(?<![</])'bblafasel'b";

或使用您的样本:

string pattern = @"(?i)(?<![</])'b" + l_sOldvalue + @"'b";    
Match match = Regex.Match(doc.OuterXml, pattern);
if ((match.Success) && (l_bflag))
{
    string l_sChangexml = Regex.Replace(doc.OuterXml, pattern, l_sNewValue);
    doc.LoadXml(l_sChangexml);
}

下次请展示您的XML示例,这样会更容易。

HTH

hmm -删除所有内容可以通过删除><之间的一切来完成,或者我错过了什么?除此之外,所有的标签属性都必须被删除,这可以通过删除<charactersToNextWhitespace>之间的所有内容来完成。

可能是(不是testet it)

s/>.*?</></g
s/(<'w+)'W.*?>/'1/g;