我需要从收到的邮件正文中提取一个词。
我在参考网站后使用了正则表达式,但它没有给出任何结果,也没有抛出错误。
示例:说明:示例文本
我只想要冒号后的第一个单词。
Dim reg1 As RegExp
Dim M1 As MatchCollection
Dim M As Match
Dim EAI As String
Set reg1 = New RegExp
With reg1
.Pattern = "Description\s*[:]+\s*(\w*)\s*"
.Global = False
End With
If reg1.Test(Item.Body) Then
Set M1 = reg1.Execute(Item.Body)
For Each M In M1
EAI = M.SubMatches(1)
Next
End If
请注意,您的模式运行良好,但最好写为:
Description\s*:+\s*(\w+)
它将匹配Description
,然后是 0+ 个空格,1+ 个:
符号,再次是 0 个或多个空格,然后将一个或多个单词字符(如字母、数字或符号)捕获到组 1 中_
。
现在,捕获组 1 值存储在M.SubMatches(0)
. 此外,您不需要运行,.Test()
因为如果没有匹配项,您就不需要迭代它们。您实际上想要获得一场比赛。
因此,只需使用
Set M1 = reg1.Execute(Item.body)
If M1.Count > 0 Then
EAI = M1(0).SubMatches(0)
End If
哪里M1(0)
是第一个匹配项,并且.SubMatches(0)
是驻留在第一组中的文本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句