3

より多くのフォルダーがあるパスがあります。一部のフォルダーには、「1.0.0」または「1.0.0.0」のようなパターンが含まれる場合があります (任意の数を指定できますが、その間にこの形式のドットが入ります)。

Regex.Match で正常に動作する正規表現を使用しようとしていますが、動作していませんDirectory.GetDirectories(path, regexPattern) 。使用したい式自体は次のとおりです。@"(\d+)\.(\d+)\.(\d+)(\.\d+)*"

GetDirectoriesメソッドでその式を使用するにはどうすればよいですか? または、検索しているフォルダーを見つける他の方法はありますか?

4

4 に答える 4

6

*.*, *.jpgディレクトリは、ディレクトリの名前を一致させるために正規表現を使用しません。コマンド プロンプト (など)で使用する一般的な方法である searchPatern を使用します。

すべてのディレクトリを取得してから、正規表現を適用して一部のディレクトリを除外する必要があります

Regex reg = new Regex(@"(\d+)\.(\d+)\.(\d+)(\.\d+)*");

var dirs = Directory.GetDirectories(path)
                     .Where(path => reg.IsMatch(path))
                     .ToList();
于 2013-10-21T11:42:49.823 に答える
0

メソッドで正規表現を使用することはできません。2 番目のパラメーターは SearchOptions 型です。AllDirectories または TopDirectoryOnly が必要な場合。

http://msdn.microsoft.com/en-us/library/ms143448.aspx

代わりに、次のような検索語を使用できます。

                    Dim myDir As New IO.DirectoryInfo(path)
                    Dim myFiles As IO.FileInfo() = myDir.GetFiles("1.0.0*")
于 2013-10-21T11:41:56.993 に答える