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

This is what you want

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

works here

I had answered a related question here

于 2012-09-23T17:56:00.470 に答える
0

この正規表現を試してください:

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