'='演算子のいずれかの側で式を交換するにはどうすればよいですか?
たとえば、私は持っています:
a.Text = b.ID;
サイドを変更するには正規表現が必要です:
b.ID = a.Text;
C#のVisualStudioの置換ウィンドウで正規表現を使用したい
'='演算子のいずれかの側で式を交換するにはどうすればよいですか?
たとえば、私は持っています:
a.Text = b.ID;
サイドを変更するには正規表現が必要です:
b.ID = a.Text;
C#のVisualStudioの置換ウィンドウで正規表現を使用したい
Visual Studioの[ファイルに置換]ダイアログで、[([^= ]*) = ([^= ]*);検索する文字列]テキストボックスと[置換]ダイアログに入力します$2 = $1;。たとえば、VisualStudio2012では次のようになります。

C#では、次のようなコードを使用してそれを行うことができます。
var text = "a.Text = b.ID;";
var regex = new Regex(@"^(?<left>[^=\s]+)\s*=\s*(?<right>[^;]+);$");
var match = regex.Match(text);
if (match.Success) {
var newText = String.Format(
"{0} = {1};", match.Groups["right"].Value, match.Groups["left"].Value);
}
正規表現の内訳:
^:文字列の先頭に一致を固定します(?<left>[^=\s]+)=:空白または空白ではない文字を少なくとも1つ一致させます。。という名前のグループにキャプチャしleftます。\s*=\s*=:オプションで空白で囲まれた一致。(?<right>[^;]+):ではない文字を少なくとも1つ一致させ;ます。。という名前のグループにキャプチャしrightます。;:一致し;ます。$:文字列の最後に一致を固定します。Visual Studioエディターで同様の置換を実行する場合は、[クイック置換]ダイアログボックスで次の値を使用する必要があります。
{[^=:b]+}:b*=:b*{[^;]+}\2 = \1主な違いは、グループは括弧ではなく角かっこで定義され、空白文字グループはでは:bなく、で表されること\sです。
ここにアイデアがあります:
using System;
using System.Text.RegularExpressions;
class Test
{
static void Main()
{
var regex = new Regex("([^=]*) = ([^;]*);");
string input = "a.Text = b.ID;";
string output = regex.Replace(input, "$2 = $1;");
Console.WriteLine(output);
}
}
これにより、の両側のスペース=と最後のセミコロンが保持されることに注意してください。ただし、これらも必要です。基本的に、コードは「=の前後でテキストを切り替える」以上のことを行う必要があります。
括弧で囲まれたグループを使用します。次に例を示します。
string input = "a.Text = b.ID;";
Regex regex = new Regex("([^=]*)[=]([^=]*);");
regex.Replace(input, "$2 = $1;");