1

dir1\dir2\dir3\file.aspx.cs (343,49): エラー CS0839: 引数がありません [ C:\dir\dir\dir\dir\namespace.namespace.namespace.namespace\ project.csproj]

この文字列の 2 つの領域だけを抽出する正規表現を作成するために何時間も試みてきました。太字部分が撮りたい部分です。

この文字列を 2 つの別個の文字列に分割する必要があります。

  1. 最初の "(" より前のすべてが必要です
  2. "[" と "]" の間のすべて。ただし、"project.csproj" は含まれません。

#1については、私が得た最も近い(^.*\()ものは、基本的に最初の「(」までのすべてをキャプチャするものです(ブラケットを含みますが、これは望ましくありません

#2については、私が得た最も近い(\[.*\])ものは、基本的にブラケット内のすべてをキャプチャするものです(不要なブラケットを含む)。

上記の文字列の単語は、「.csproj」、「C:\」、および「.cs」以外は変更される可能性があります。

コンテキスト: これは、コンパイル時に MSBuild がエラーを吐き出す方法です。これら 2 つの部分をキャプチャすることで、それらを連結してエラー ファイルへの正確なリンクを提供し、Visual Studio でファイルを自動的に開くことができます。

System.Diagnostics.Process.Start("devenv.exe","/edit path");
4

2 に答える 2

1

さて、今のところ括弧はあなたに何の役にも立っていません。関心のある部分の周りに配置するだけです。

^(.*)\(

\[(.*)\]

一致から除外するprojects.csprojには、次の後に含めるだけです.*

\[(.*)projects.csproj\]

次にmatch.Groups(1)、それぞれの場合に目的の文字列を提供します(オブジェクトはどこにmatchありますかMatch)。

projects.csproj任意のファイル名を指定できる場合(つまり、最後のバックスラッシュまでのすべてが必要な場合は、次を使用します。

\[(.*?)[^\\]*\]
于 2013-06-27T19:08:16.560 に答える