-1

解析する必要のあるファイル名が複数あります。これらのファイル間の共通点の1つは、レベル(リビジョン)がドットの前の最後の文字であるということです。ハイフン(-)も受け入れる正規表現が必要です。

ファイル名の例:

  1. 068394B.dwg
  2. 06841213E.dwg
  3. 420676-.dwg
4

3 に答える 3

3

これを試して

@"^\d*[a-zA-Z\-]\.dwg$"

構文はc#でも同じである必要があります


グループをキャプチャする必要がある場合は、括弧を使用してそれを行うことができます。

たとえば、次のようになります。

@"^(\d*)([a-zA-Z\-])\.dwg$"

最後にあなたの番号とあなたのコードをキャプチャします。

最初のコレクションが完全一致になり、後続のコレクションが親のグループになるMatchというコレクションが必要です。Groups


詳細については、このリファレンスページをご覧ください

これがサンプルです

于 2013-01-14T17:06:14.560 に答える
1

そうですね、そのための正規表現は本当に必要ありません。Path.GetFileNameWithoutExtensionおよびを使用してPath.GetExtension、名前と拡張部分を取得できます。次に、とを使用name.Substring(0, name.Length - 1)name[name.Length-1]て番号と改訂を取得します。

Int32.TryParse番号が番号であるかどうかif ((ext >= 'A' && ext <= 'Z') || ext == '-')を確認し、リビジョンが有効であることを確認するために使用します。

于 2013-01-14T17:01:40.810 に答える
0

にファイル名のリストがあることを考慮してlstFn

できるよ

List<string> lstPFn=lstFn.Where(f=>Regex.IsMatch(f,@"^.*\.d.*$"))
                         .ToList<string>();
于 2013-01-14T17:01:38.723 に答える