2017-12-01 6 views
0

ファイル名を取得するために、次のコマンドを使用しています。Excel VBAファイル名からの抽出日

Dim wbName As String 
wbName = Left(ActiveWorkbook.Name, (InStrRev(ActiveWorkbook.Name, ".", -1, vbTextCompare) - 1)) 

ファイル名の一部を次のようになります。

"CM CC追跡ログFY 17-18-08.07.17"
"追跡ログ10-23-17"
「追跡ログ17-18 Car Club USA - 8-7-17 "

私は日付文字列を抽出する方法を理解しようとしていますが、regexを使ってパターンマッチします。

08.07.17
10-23-17
8-7-17

答えて

1

あなたはこのパターンを試みることができる:

\b(1[0-2]|0?[1-9])[-./](3[01]|[1-2]\d|0?[1-9])[-./](\d{2}|\d{4})\b 

これは、日付を前提として、あなたはあなたの例で示したように、

  • は、MDY形式であることを確認し、それはglobalであることを確認してください、
  • Mは1〜12の範囲内の1桁または2桁の入力です。オプションの先頭は0(1〜9)
  • Dは任意には0をリードして1-31の範囲内であろう1~9
  • Yはであろういずれかの二桁または4桁の数字

セパレータ[-./]

のセットであろう

必要な場合は、MDとYが別々のキャプチャグループになります。

これで十分に説明できない場合は、より具体的にする必要があります。たとえば、すべてのセパレータが同じになるように変更するのは簡単です。

+0

私はこれを私のパターンに使用しました。ありがとう! – Chris

0

この正規表現は、あなたが言及した日付形式のすべてをキャプチャします。

(\d{1,2}[.,-]\d{1,2}[.,-]\d{1,2}) 
+0

私が気づいたのは、優先順位の問題があるかもしれないが、あなたが投稿した例では、すべての日付がファイル名の最後にあるようだから、単に 'Right(filename、8)'関数を最初に適切な部分文字列を取得し、それに正規表現を適用します。このようにして、正確な答えが得られることを確かめます。正規表現にすべてを含めることは難しいです – Ibo

関連する問題