【发布时间】:2012-09-23 16:22:33
【问题描述】:
我有一个字符串,它代表 xml 的一部分。
string text ="word foo<tag foo='a' />another word "
我需要替换此字符串中的特定单词。所以我使用了这段代码:
Regex regex = new Regex("\\b" + co + "\\b", RegexOptions.IgnoreCase);
return regex.Replace(text, new MatchEvaluator(subZvyrazniStr));
static string subZvyrazniStr(Match m)
{
return "<FtxFraze>" + m.ToString() + "</FtxFraze>";
}
但我的代码的问题是,它还替换了标签内的字符串,我不想这样做。那么我应该添加什么,仅替换标签之外的单词?
例如:当我将变量 co 设置为“foo”时,我想返回 "word <FtxFraze>foo</FtxFraze><tag foo='a' />another word"
谢谢
【问题讨论】:
-
如果 XML 结构相关,则不应尝试使用正则表达式解析或修改 XML。 See this. 请改用 XML 解析器。然后您可以将正则表达式代码仅应用于文本节点。
-
我知道,但是在这种情况下,我有很多节点,我不知道确切的结构,所以我认为使用正则表达式更快更容易