解析する必要のあるファイル名が複数あります。これらのファイル間の共通点の1つは、レベル(リビジョン)がドットの前の最後の文字であるということです。ハイフン(-)も受け入れる正規表現が必要です。
ファイル名の例:
- 068394B.dwg
- 06841213E.dwg
- 420676-.dwg
これを試して
@"^\d*[a-zA-Z\-]\.dwg$"
構文はc#でも同じである必要があります
グループをキャプチャする必要がある場合は、括弧を使用してそれを行うことができます。
たとえば、次のようになります。
@"^(\d*)([a-zA-Z\-])\.dwg$"
最後にあなたの番号とあなたのコードをキャプチャします。
最初のコレクションが完全一致になり、後続のコレクションが親のグループになるMatch
というコレクションが必要です。Groups
詳細については、このリファレンスページをご覧ください
そうですね、そのための正規表現は本当に必要ありません。Path.GetFileNameWithoutExtension
およびを使用してPath.GetExtension
、名前と拡張部分を取得できます。次に、とを使用name.Substring(0, name.Length - 1)
しname[name.Length-1]
て番号と改訂を取得します。
Int32.TryParse
番号が番号であるかどうかif ((ext >= 'A' && ext <= 'Z') || ext == '-')
を確認し、リビジョンが有効であることを確認するために使用します。
にファイル名のリストがあることを考慮してlstFn
できるよ
List<string> lstPFn=lstFn.Where(f=>Regex.IsMatch(f,@"^.*\.d.*$"))
.ToList<string>();