VBA中正则表达式提取连续多个字母前的字符串

在VBA中,通过正则表达式提取一段文字当中,连续多个字母之前的字符串

原始字符串结果
好家伙H客家话FGTY1开始好家伙H客家话
口感哈和FGB2结束口感哈和
所得S到的VFGTYU3看看所得S到的
T小城大事DVEWAS4哦哦T小城大事
浩瀚海P洋VBGTY6前期浩瀚海P洋
宣传的思想CVFRTY5来了宣传的思想

尝试过的匹配模式 \w+ (?=[A-Za-z]+) ,得出的结果始终都包含得有字母。
最终结果如上列表所示,该怎么书写正则匹配模式才能得到不包含连续的字母,只想要连续字母前的字符串。

您可以使用下列正则表达式来实现提取连续多个字母前的字符串:

(.*)\w+(?=[A-Za-z]+)(.*)

您可以使用VBA中的RegExp对象,通过该对象的Execute方法来实现对字符串的匹配。下面是一个示例代码:

Sub ExtractString()
    Dim str As String
    Dim regEx As New RegExp
    Dim Matches As MatchCollection

    str = "好家伙H客家话FGTY1开始"
    regEx.Pattern = "(.*)\w+(?=[A-Za-z]+)(.*)"

    Set Matches = regEx.Execute(str)
    If Matches.Count > 0 Then
        Debug.Print Matches(0).SubMatches(0)
    End If
End Sub


该代码执行后会在调试窗口输出“好家伙H客家话”。


Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = "^(.[^a-zA-Z]+)+"

这个可以1!!