Excel VBA从文件名中提取日期

时间:2017-12-01 18:49:42

标签: excel string vba date pattern-matching

我使用以下内容来获取文件名。

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汽车俱乐部美国 - 8-7-17”

我试图弄清楚如何使用正则表达式提取日期字符串,模式匹配。

08.07.17
10-23-17
17年8月7日

2 个答案:

答案 0 :(得分:1)

你可以尝试这种模式:

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

这假定您的示例中显示的日期

  • 采用MDY格式,
  • M可以是单数字或双数字条目,范围为1-12,可选前导0为1至9
  • D将在1-31的范围内,可选的前导0为1至9
  • Y将是两位数或四位数

分隔符将位于[-./]

的集合中

如果您需要,M D和Y将位于不同的捕获组中。

如果这不足以描述事物,那么你需要更加具体。例如,修改很容易使所有分隔符都相同。

答案 1 :(得分:0)

此正则表达式将捕获您提到的所有日期格式。确保它是global

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