我在 VB 中处理正则表达式时遇到问题。我的文字是:
遗憾的是目前在多伦多总站未定晚
我在 Expresso 中测试了我的正则表达式,并为我的目的找到了这个正则表达式。事情是:多伦多总站也只能是“多伦多”。所以这是我的模式:
is sadly currently in (([A-Za-z]*)(\s|-)){1,3}(.|\s)*?undetermined
问题是在 VB 中处理正则表达式,因为我的 Pattern 给了我这样的结果:
- 遗憾的是目前在多伦多总站未确定
- 未定
- 多伦多
- 主要的
- 未定
- 未定
- 多伦多
- 主要的
- 未定....
- 未定
但我无法通过 VB 访问 toronto 和 main 这两个词——我也不希望“未确定”成为结果的一部分。我试过了,但如果我尝试并声明没有这样的对象,match.item(0).submatches.item(0).submatches.item(0)
VBA 已经抛出错误- 显然它无法处理一些“多级”正则表达式。match.item(0).submatches.item(0).submatches
有没有办法改进我的模式,以便我只需要使用一个子匹配,或者是否可以通过 VBA 使用多个子匹配?!
编辑:
GetDelay.Pattern = is sadly currently in (([A-Za-z]*)(\s|-)){1,3}(.|\s)*?undetermined"
GetDelay.IgnoreCase = True
GetDelay.Multiline = True
...
If GetDelay.TEst(MailBody) Then
Set m = GetDelay.Execute(MailBody)
If m.Item(0).SubMatches.Count > 0 Then
OrtBody = m.Item(0).SubMatches.Item(0).SubMatches.Item(0) + " " + m.Item(0).SubMatches.Item(0).SubMatches.Item(1) 'Error 424 comes here - Object required
If GetReason.TEst(AbweichungsmailBody) Then
Set m = GetReason.Execute(AbweichungsmailBody)
If m.Item(0).SubMatches.Count > 0 Then
Reason= m.Item(0).SubMatches.Item(0)
Else
Reason= "Error!"
End If
Else
Reason = "Keine Angabe gefunden!"
End If
Else
thisfunction= False
End If
Else
thisfunction= False
End If