Я думаю, что у вас уже есть правильный regular expression
для извлечения всего адреса электронной почты из текста.
Однако проблема в том, что вы не используете его правильно.
Правильные шаги следующие:
Используйте regular express (Regex)
для сопоставления текста.
Для каждого результата сопоставления в MatchCollection
выберите значение из результата сопоставления .
Чтобы сделать Regular expression
более понятным, я поместил весь метод Regex
в дополнительный метод, который вы могли бы вызывать отдельно для извлечения писем.
Все коды написаны на основе вашего оригинала коды.
Более подробную информацию вы можете найти в кодах ниже.
.aspx Страница:
<form id="form1" runat="server">
<div>
<h1>This is Page</h1>
<asp:Button ID="btnFinal" runat="server" Text="Click" OnClick="btnFinal_Click" />
<br />
<asp:Label ID="displayLabel" runat="server"></asp:Label>
</div>
</form>
Скрытый код:
protected void btnFinal_Click(object sender, EventArgs e)
{
string exampleTxt = @"[id=4068;name=mrgar@yahoo.com][id=4078;name=mrrame@gmail.com]";
string[] emails = identifyEmailAddress(exampleTxt);
foreach (string s in emails)
{
displayLabel.Text += s + "<br />";
}
}
private string[] identifyEmailAddress(string txt)
{
const string MatchEmailPattern = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
Regex rx = new Regex(MatchEmailPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
MatchCollection matches = rx.Matches(txt);
int noOfMatches = matches.Count;
string[] result = new string[noOfMatches];
int i = 0;
foreach (Match match in matches)
{
result[i++] = match.Value.ToString();
}
return result;
}