現在、次の正規表現を使用して、Outlook HTML メール アイテムから最初の会話アイテムを削除しています。
.*?>(([^:]+?):<.*?\2):
最初の会話アイテムを削除するには、最初に出現したグループ 1 をグループ 2 の値に置き換えます。.NET では次のようになります。
private static readonly Regex LAST_CONVERSATION_REPLACE_PATTERN = new Regex(@".*?>(([^:]+?):<.*?\2):", RegexOptions.Compiled);
// ...
MatchCollection matches = LAST_CONVERSATION_REPLACE_PATTERN.Matches(htmlMessageBody);
if (matches.Count > 0)
{
Match match = matches[0];
if (match.Groups.Count > 2)
{
return htmlMessageBody.ReplaceFirst(match.Groups[1].ToString(), match.Groups[2].ToString());
}
}
ReplaceFirst
独自の文字列拡張メソッドです。ただし、このパフォーマンスは少し残念です。Regex Coach はこれを巨大なメール アイテムにマイクロ秒で適用できますが、Outlook アドインでは最大 10 秒かかります。
パターンを次の明示的な代替手段に置き換えると、パフォーマンスが大幅に向上します。
.*?>(From:<.*?From):
その正規表現を使用すると、必要なものを取得するのに 1 秒もかかりません。ただし、これは言語固有であるため、以前のバリアントを優先します。.NET で高速化する方法はありますか? または、これでより良いパフォーマンスを発揮できるサードパーティの正規表現ライブラリはありますか?
提案をありがとう
パスカル