使用正则表达式在字符串中查找日期

时间:2015-10-22 09:39:48

标签: regex vba excel-vba excel

我正在尝试使用常规表达式在Excel中使用VBA从字符串中提取日期。

字符串是:

Previous Month: 9/1/2015 - 9/30/2015

或者它可以是:

Custom: 9/1/2015 - 9/30/2015

你知道我怎么能做到这一点?我之前从未使用过正则表达式。

2 个答案:

答案 0 :(得分:2)

RegEx是日期的糟糕选择。您可以查找:并检查剩余的令牌:

Sub Foo()
    Dim result() As Variant

    result = GetDates("Previous Month: 9/1/2015 - 9/30/2015")

    If UBound(result) Then
        Debug.Print result(0)
        Debug.Print result(1)
    End If
End Sub

Function GetDates(str As String) As Variant()
    Dim tokens() As String
    tokens = Split(Mid$(str, InStr(str & ": ", ":")), " ")

    If (UBound(tokens) = 3) Then
        If IsDate(tokens(1)) And IsDate(tokens(3)) Then
            GetDates = Array(CDate(tokens(1)), CDate(tokens(3)))
            Exit Function
        End If
    End If

    ReDim GetDates(0)
End Function

答案 1 :(得分:1)

试试这个:

([1-9]|1[012])[/]([1-9]|[1-2][0-9]|3[01])[/](19|20)[0-9]{2}