Получить якорный тег HREF и VALUE

У меня есть строка, которая выглядит так:

<a href="http://forum.tibia.com/forum/?action=board&boardid=476">Amera</a><br><font class="ff_info">This board is for general discussions related to the game world Amera.</font>

Как я могу игнорировать / удалить все после </a> и тогда только получите URL: http://forum.tibia.com/forum/?action=board&boardid=476и значение Amera

Итак, потом я хочу 2 переменные со своими значениями, например:

string url = "http://forum.tibia.com/forum/?action=board&boardid=476";

а также

string value = "Amera";

Я попробовал это, чтобы получить значение:

string value = System.Text.RegularExpressions.Regex.Replace(MYSTRING, "(<[a|A][^>]*>|)", "");

Но это возвращает:

Amera</a><br><font class="ff_info">This board is for general discussions related to the game world Amera.</font>

3 ответа

Попробуй это:

HtmlDocument dc = new HtmlAgilityPack.HtmlDocument();
        dc.LoadHtml("<a href='http://forum.tibia.com/forum/?action=board&boardid=476'>Amera</a><br><font class='ff_info'>This board is for general discussions related to the game world Amera.</font>");
        foreach (HtmlNode link in dc.DocumentNode.SelectNodes("a"))
        {
            string url = link.Attributes["href"].Value; // http://forum.tibia.com/forum/?action=board&boardid=476
            string value = link.InnerText; // Amera
        }

Для получения URL, возможно, попробуйте этот шаблон регулярного выражения: /href=\"(.*)\"/

... И чтобы получить значения между > Amera </a> используйте шаблон как: >(.+?)</a>

... хотя, это кажется далеко от совершенства...

Если a тег не будет содержать больше атрибутов, вы можете использовать это только для URL:

\bhref="(.*?)"

И немного сложнее для URL и текста:

<a\b[^>]*?\bhref="([^"]*?)"[^>]*?>(.*?)<\/a>

Итак, в коде C# (кавычки должны быть экранированы!):

var html = "<a href=\"http://forum.tibia.com/forum/?action=board&boardid=476\">Amera</a><br><font class=\"ff_info\">This board is for general discussions related to the game world Amera.</font>";
var match = Regex.Match(html, "<a\\b[^>]*?\\bhref=\"([^\"]*?)\"[^>]*?>(.*?)<\\/a>", RegexOptions.IgnoreCase);
if (match.Success) {
    var url = match.Groups[1];
    var text = match.Groups[2]
}
Другие вопросы по тегам