2

我有一个字符串,它代表 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"

谢谢

4

3 回答 3

5

如果您不那么挑剔,在某些情况下,像这样的简单技巧可能就足够了:

\bfoo\b(?![^<>]*>)
于 2012-09-23T17:45:48.247 回答
1

这就是你想要的

(?<!\<[\w\s]*?)\bfoo\b(?![\w\s]*?>)

这里工作

我在这里回答了一个相关的问题

于 2012-09-23T17:56:00.470 回答
0

试试这个正则表达式:

Regex r = new Regex(@"\b" + rep + @".*?(?=\<)\b", RegexOptions.IgnoreCase);
于 2012-09-23T16:56:06.010 回答