在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!!