VBA擅长在字符串中查找数字模式

时间:2017-08-17 14:10:35

标签: regex excel-vba vba excel

我能够编写一个代码,在字符串中找到6位数字并将其复制到下一列但是我想添加搜索,它也可以找到带有模式##-####的数字并将其复制到下一列,以下示例:

Example

有人能帮助我吗?

Sub Pull_6_Digit_Numbers_From_String()


   Dim r As Range, i As Long
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\b\d{6}\b"
        For Each r In Range("A1", Range("A" & Rows.Count).End(xlUp))
            If .test(r.Value) Then
                For i = 0 To .Execute(r.Value).Count - 1
                    r(, i + 2).Value = .Execute(r.Value)(i)
                Next
            End If
        Next
    End With

1 个答案:

答案 0 :(得分:4)

您当前的模式\b\d{6}\b与单词边界匹配,然后是6个连续数字,然后是单词边界。因此,它与123456中的text 123456 here匹配。要匹配12-3456,您可以将模式拆分为2位和4位子模式,并插入可选的-模式-?

\b\d{2}-?\d{4}\b

请参阅regex demo

-?匹配1或0个连字符,\d{2}\d{4}匹配,所有字词边界都匹配6位数。