2

C# で正規表現を使用する前に特定の単語がない場合は、1 つの単語を置き換える必要があります。私の例では、「Ballmer」を「Steve Ballmer」に置き換えます。

の:

...text...Ballmer...text

結果:

...text...Steve Ballmer...text

しかし、「Steve」が既に存在する場合は、Steve を再度追加するべきではありません。

の:

...text...Steve Ballmer...text

結果:

...text...Steve Ballmer...text

ありがとう。

4

3 に答える 3

4

否定的な後読み(?<!...)と肯定的な先読みを使用する(?=...)

string output = Regex.Replace(input, @"(?<!Steve )(?=Ballmer)", "Steve ");
于 2012-10-29T22:10:50.283 に答える
2

一致する場合は、否定後読みを使用しますBallmer

string result = Regex.Replace(input, @"(?<!Steve )Ballmer", "Steve Ballmer");

これはまさにあなたが望むことをします。(およびスペース)Ballmerが直前にないものと一致します。Steve

于 2012-10-29T22:08:37.230 に答える
0

正規表現は楽しいですが、大きな銃に頼る前に、より単純なツールを試すことも価値があります。この特定の問題は、基本的な検索と置換で解決できます

  1. 「Ballmer」を「SteveBallmer」に置き換えます
  2. 「SteveSteveBallmer」を「SteveBallmer」に置き換えます(オーバースティーブを修正するため)

あるいは

  1. 「SteveBallmer」を「Ballmer」に置き換えます
  2. 「Ballmer」を「SteveBallmer」に置き換えます
于 2012-10-29T23:56:14.213 に答える