VB での正規表現の処理に問題があります。私のテキストは:
悲しいことに、現在トロント中央駅にいますが、遅くは未定です
Expresso で正規表現をテストしたところ、目的に合った正規表現が見つかりました。問題は、トロントの主要駅も「Toronto」だけになる可能性があるということです。これが私のパターンです:
is sadly currently in (([A-Za-z]*)(\s|-)){1,3}(.|\s)*?undetermined
問題は VB で正規表現を処理することです。これは、パターンで次のような結果が得られるためです。
- 悲しいことに、現在トロント中央駅にいます 未定
- 未定
- トロント
- 主要
- 未定
- 未定
- トロント
- 主要
- 未定 ....
- 未定
しかし、VB 経由で toronto と main という単語にアクセスすることはできません。また、「未定」を結果の一部にしたくありません。試してみmatch.item(0).submatches.item(0).submatches.item(0)
ましたが、試してみると、VBAはすでにエラーをスローし、match.item(0).submatches.item(0).submatches
そのようなオブジェクトがないと述べています-明らかに、それらの「マルチレベル」正規表現の一部を処理できません。サブマッチを 1 つだけ使用する必要があるようにパターンを改善する方法はありますか、または 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