完全な回答ではないが、参考に。
課題の一部を、WordVBAで処理したものです。
正規表現というものを、使おうとしています。
メイルメッセージの(多分本文だろうが)のテキストをワードの文書に貼り付ける(今回は手動で行う)。テストデータとして使います。
私の場合は「こんにちは田中さん」「こんにちは東野さん」の2文を、適宜の場所に挿入コピー貼り付けしました。またMsgboxは確認用です。本来不要。
ーー
ワードのVBEの標準モジュールに
Sub RegExpSample3()
Dim regEx As Object, Matches As Object, Match As Object
ActiveDocument.Range(0, 0).Select
Selection.WholeStory
Set regEx = CreateObject("VBScript.RegExp")
txt = Selection.Text
MsgBox txt
With regEx
.Pattern = "こんにちは..さん" ' パターンを設定します。 ワイルドカードの??は「..」です。2文字を挟むの意味。
.IgnoreCase = False ' 大文字と小文字を区別しないように設定します。
.Global = True ' 文字列全体を検索
End With
Set Matches = regEx.Execute(txt) ' Executeメソッドで正規表現にマッチした箇所を取得できます
'MsgBox Matches.Item(0).Value '' → @hugafuga ,マッチしたものの一つ目の要素の値を出力。マッチするものがなければエラー
MsgBox "該当Count: " & Matches.Count '' Countメソッドで値が取得できます。
For Each Match In Matches '' ForEachでMatches内の要素を出力できます。
msg = Match.Value
MsgBox msg
MsgBox Replace(Replace(msg, "こんにちは", ""), "さん", "")
Next Match
End Sub
を貼り付け。(上記はWEB記事を一部修正したもの)
実行。
「鈴木」と「東野」が表示されると思う。
==
メイル受信ソフトが何なのか質問以書いてない。マイクロソフト系のOutlookなどならOutlookVBAがあるので、上記を多少の修正で使えるかも。
ーー
名前が見つかった(「鈴木」と「東野」(「などの)後は、特定のフォルダーにでも移すなどのコードが必要だが、これはVBAの範疇でしょう。
Google系のものだと、JavaScriptで扱うところのVBA的なものがあるかもしれない。そこには正規表現が使える可能性は多い。
正規表現はUNIX系統のソフトが出自。
ーー
ただし「Pattern=」のところのワイルドカードは、VBAと違い、「こんにちは*さん」や「こんにちは??さん」になると思うので、注意。このほうが本家筋の書き方。
後方参照の「For Each Match In Matches」以下は、VBScriptではできるが、その他の処理系では別の書き方になる可能性が多い。
==
お勧め
上記のようにややこしいので
(1)この目的に特化したフリーソフトを探すか
(2)メイルソフトにメイル文の一部で、仕分けができるような機能がないか
勉強してください。
お礼
ありがとうございます。 やはりパターンを1つずつループを回さなければいけないのですね。 参考にします。
補足
入力データはメールではなく、システムから吐き出されるログ(.txt)です。出力はExcelかAccessの予定です。 パターンは1000種類程です。