2016-03-24 12 views
1

私はPowershell正規表現を使用してAssemblyInfo.csファイルからバージョンデータを取得しようとしています。下の正規表現は私の最善の試みですが、文字列は[assembly: AssemblyVersion("です。私はこの正規表現をいくつかのWeb正規表現のテスターに​​入れました。それは、私が望むことをしているように見えますが、これはPowerShellの正規表現を使用する際の最初の亀裂です。2つの二重引用符の間にすべてのデータを抽出します

$s = '[assembly: AssemblyVersion("1.0.0.0")]' 
$prog = [regex]::match($s, '([^"]+)"').Groups[1].Value 

答えて

4

はまた、最初"に到達するまで、それ以外の場合は最初からキャプチャを開始でしょう開始二重引用符を含める必要があります。

$prog = [regex]::match($s, '"([^"]+)"').Groups[1].Value 
          ^
3

二重引用符の間でデータの汎用的なソリューションでは"([^"]+)"

Regex101 Demo

+0

また '(\ dは+ \。?)+' [ここでデモ](https://www.regex101.com/r/qI4wG6/3)を使用することができますバージョン番号がほしいのであれば。 –

0

この正規表現を試してみて、他の回答は素晴らしいです。しかし、私がAssemblyInfo.csをバージョン文字列のために解析していた場合、私はもっと明示的になります。

$versionString = [regex]::match($s, 'AssemblyVersion.*([0-9].[0-9].[0-9].[0-9])').Groups[1].Value 
$version = [version]$versionString 

$ versionString

1.0.0.0 

$バージョン

Major Minor Build Revision 
----- ----- ----- -------- 
1  0  0  0  

更新/編集:これは一般的な問題でない場合は、もう一度(バージョンを解析に関連する

二重引用符間のテキストの解析について)は、私がac私はいつもMajor.minorが十分であることを知っていて、1.2.*のようなフォーマットを使用することによって、何の努力もせずにいくつかの追加情報を得ているので、私のファイルにはM.m.b.rという形式のバージョンがあります。

Compile date and timeおよびCan I generate the compile date in my C# code to determine the expiry for a demo version?を参照してください。アセンブリバージョンの第三及び第四の部分のために*を使用する場合

、これら2つの部分は、以下の値をコンパイル時に自動的に設定されている:

第3の部分はからの日数であります2000-01-01

第四の部分は

(いくつかのMSDNのページは言うものの、それは乱数である)を2で割った午前0時からの秒数です

バージョン1.2より大きい* 1.2、1.2.3、または1.2.3.4などしか受け入れられないと思われるバージョンのことを考えてみてください。

+0

数字のために '[0-9]'を '/ d'ワイルドカードに置き換えることをお勧めします。また、コンポーネント(メジャー、マイナー、ビルド、リビジョン)のいずれかが** 5.12.1.11 **のように2桁になる場合には、 '+'を使用する必要があります。 – doron

+0

@doron、良​​いフィードバック、ありがとうございます。私は実際に自分のやり方を反映させるために答えを更新しました。すべての組み合わせを解析するのではなく、他の/古いプロジェクトで "望ましくない"バージョンの文字列を探して自分の好みの方法を使うことを考えました。思考を呼び起こすコメントに感謝します。 –

1

正規表現は読みにくいですベストプラクティスは、見える可能性のあるすべてのケースを解決しながら、できるだけシンプルにすることです。文字列全体で唯一の数値シーケンスを取得しようとしているので、そのグループを探してグループを使用してバイパスする必要があります。

$s = '[assembly: AssemblyVersion("1.0.0.0")]' 
$prog = [regex]::match($s, '[\d\.]+').Value 

$ progの

1.0.0.0 
関連する問題