Я пытаюсь извлечь некоторую информацию в области «отказ от ответственности» по электронной почте для продвижения акций (нежелательная почта для большинства).
Как правило, у заявителя будет отказ от ответственности:
Компания XYZ получила компенсацию в пятьдесят тысяч долларов за двухнедельную акцию ABC.
У меня есть регулярное выражение, которое работает в таких случаях (возможно, не самое эффективное в его нынешнем виде), и, похоже, работает в большинстве случаев. Однако, когда заявление об отказе от ответственности использует веб-адрес для ссылки на продвигающую компанию (например, www.companyxyz.com вместо Company XYZ), мое регулярное выражение получает «.com» и остальную часть фразы, которую я пытаюсь перехватить - не часть "www.companyxyz".
Вот мой метод регулярных выражений:
public string ExtractCompensationLine(string message)
{
string compensationLine = string.Empty;
string messageLine = Regex.Replace(message, "[\n\r\t]", " ");
string leftPrefix = @"\.((\w|\s|\d|\,)+";
string rightPrefix = @"(\w|\s|\d|\,)+\.)";
string[] phrases =
{
@"has been compensated",
@"we were also paid",
@"has been previously compensated",
@"currently being compensated",
@"the company has compensated",
@"has agreed to be compensated",
@"have been compensated up to",
@"dollars from a third party",
@"the company will compensate us"
};
foreach (string phrase in phrases)
{
string pattern = leftPrefix + phrase + rightPrefix;
Regex compensationRegex = new Regex(pattern, RegexOptions.IgnoreCase);
Match match = compensationRegex.Match(messageLine);
if (match.Success)
{
compensationLine += match.Groups[1].Value;
}
}
return compensationLine;
}
Итак, регулярное выражение захватывает всю фразу от первого слова предложения (путем нахождения предыдущего периода, вплоть до последнего периода предложения. Но эти веб-адреса не подходят для моего регулярного выражения.