0

私はこのテキストを持っています:

デバッグ情報ファイル 'c:\Users\Path1\Path2\Strategies\Path3\CustomStrategy.PDB' の作成中に予期しないエラーが発生しました -- 'c:\Users\Path1\Path2\Strategies\Path3\CustomStrategy.pdb: システムがパスを見つけられません指定。

ファイル パスc:\Users\Path1\Path2\Strategies\Path3またはを解析する必要がありますc:\Users\Path1\Path2\Strategies\Path3\CustomStrategy.PDB。次の正規表現を使用しようとしました

\w:.+[.]\w{3}

ただし、この RegEx は最初のファイル拡張子で停止せず、パスの 2 番目のインスタンスと一致し続け、.pdb の 2 番目のインスタンスで停止します。したがって、両方のファイル パスを 1 つの正規表現に一致させます。

正規表現が 2 つのパスを 2 つの別個の一致として解析するには、何を変更する必要がありますか? ありがとう。

4

3 に答える 3

2

貪欲でない再:

\w:.+?[.]\w{3}

?の後に注意してください+

また、パスに最後のドット以外のドットが含まれていない場合は、次のように記述できます。

\w:[^.]+[.]\w{3}

拡張子が3文字で構成されているかどうかわからない場合は、次の範囲を指定する必要があります。

\w:[^.]+[.]\w{1,3}

また、パスに拡張子がまったくないが、スペースが含まれていない場合は、次のようにします。

\w:\S+
于 2012-08-08T11:00:23.060 に答える
1

これはどうですか

\w:\\(?:[^\\\s]+\\)+

ここでRegexrを参照してください

\w:\\単語の文字、a、:およびバックスラッシュに一致

(?:[^\\\s]+\\)+バックスラッシュまでのディレクトリ、非バックスラッシュまたは非空白文字に一致し、これが繰り返されます。

したがって、これは両方のパスに一致しますc:\Users\Path1\Path2\Strategies\Path3。ディレクトリ名にスペースが含まれていない限り機能します。

于 2012-08-08T11:10:20.830 に答える
0

実際、ここでは、正規表現をまったく使用しない方がよいでしょう。でテキストを分割し'、2 番目の部分を使用します。


正規表現に関しては、もっと複雑なものを使用しますが、3 文字の拡張子で終わるものだけでなく、他のファイル名をキャッチできるようにします。

'([a-z]:(?:[\\/][^\\/]*)+?)' --

(そして、一致の最初のサブパターンを使用)

于 2012-08-08T11:06:17.190 に答える