6

25を超えるプロジェクトを含むソリューションがあり、それぞれに独自のプロジェクトがありAssemblyInfoます。次のリリースに向けて、すべてのアセンブリ番号を増やして1つのメジャーバージョンを増やしようとしています。

私の正規表現スキルは最小限ですが、基本的に私は見つけたいです:

<Assembly: AssemblyVersion("x.x.x.x")>

正規x表現の用語は\d/a番号になります。ここを見て、私は使用できると思いました:

{AssemblyVersion("[\d].[\d].[\d].[\d]")}

これは機能しませんでしたが、角かっこは好きではありません。私の質問は基本的に2つの段階に分けられます。

  1. 例を見つけるためにどの正規表現文字列を使用しますか?
  2. 正規表現を使用して最初の桁を桁+1に置き換えることは可能ですか?(私は少し楽観的だと思います)もしそうなら、この状況で正規表現文字列はどうなりますか?

これはソース管理にあるので、ファイルを直接変更したくありません。

前もって感謝します。

4

2 に答える 2

4

注:これは、VisualStudioの正規表現の検索と置換を使用しています。

正規表現の置換を行っているときに追加できるとは思いません。ただし、リテラル数に置き換えることはできます。たとえば、最初の桁199:に置き換える正規表現を使用できます。

AssemblyVersion("1.0.2121.0")->AssemblyVersion("99.0.2121.0")

VisualStudioの検索と置換に使用した正規表現は次のとおりです。

Search Regex:  AssemblyVersion[(]["]([0-9]+)([.][0-9]+[.][0-9]+[.][0-9]+)["][)]
Replace Regex: AssemblyVersion("99${2}")

検索正規表現は、すべての特殊文字(.")を角かっこで囲むことによってエスケープします。次に、括弧を使用してバージョン番号を2つのグループに分割します。最初のグループは、最初の数字のセットです。2番目のグループは、最後の3セットの数字です。

たとえば、は次のようにグループ化されますAssemblyVersion("1.0.2121.0")(グループ化に中括弧を使用):。 AssemblyVersion("{1}{.0.2121.0}")したがって、グループ1は1、であり、グループ2は.0.2121.0です。

置換正規表現AssemblyVersion("99${2}")は、検索正規表現のリテラルとグループ2を使用して、置換文字列を作成します。手段はグループ2からの${2}テキストを使用します。文字列の残りはリテラルです。

于 2013-03-14T16:31:32.547 に答える
0

C#を使用してテキストを検索する場合は、これが必要な正規表現だと思います。逐語的な文字列でラップし、二重引用符をエスケープしました。

Regex regex = new Regex(@"<Assembly: AssemblyVersion\(""\d+\.\d+\.\d+\.\d+""\)>");

文字列を操作して新しい文字列にする要素を選択する場合は、次のように角かっこを追加します。

Regex regex = new Regex(@"<Assembly: AssemblyVersion\(""(\d+)\.(\d+)\.(\d+)\.(\d+)""\)>");

次に、番号に個別にアクセスして、正規表現グループを使用して新しい文字列を作成できます。

Match match = regex.Match(your_search_text);
if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
    Console.WriteLine(match.Groups[2].Value);
    Console.WriteLine(match.Groups[3].Value);
    Console.WriteLine(match.Groups[4].Value);
}
于 2013-03-14T16:26:03.153 に答える