Настоятельно советую не использовать regex в этом случае. Я уверен, что использование парсера HTML значительно облегчает задачу.
Вот пример, как это можно сделать с помощью HtmlAgilityPack. Установите его с помощью Solution>Управление NuGet Пакеты для решения ... и использовать
public List<string> HtmlAgilityPackGetHrefIfValueContains(string html, string href_text)
{
var hrefs = new List<string>();
HtmlAgilityPack.HtmlDocument hap;
Uri uriResult;
if (Uri.TryCreate(html, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp)
{ // html is a URL
var doc = new HtmlAgilityPack.HtmlWeb();
hap = doc.Load(uriResult.AbsoluteUri);
}
else
{ // html is a string
hap = new HtmlAgilityPack.HtmlDocument();
hap.LoadHtml(html);
}
var nodes = hap.DocumentNode.SelectNodes("//*[@href]");
if (nodes != null)
{
foreach (var node in nodes)
{
foreach (var attribute in node.Attributes)
if (attribute.Name == "href" && attribute.Value.Contains(href_text))
{
hrefs.Add(attribute.Value);
}
}
}
return hrefs;
}
Теперь вы можете передать html
строку или URL веб-страницы, и получить все теги (если вы планируете get a
только hrefs, используйте //a[@href]
xpath), которые содержат href_text
.
человек .. просто сделайте это самостоятельно .. https://regex101.com/ –
Что вы пробовали? Пожалуйста, опубликуйте. А что касается *, включает в себя определенное слово внутри строки *: какую строку вы имеете в виду? Значение атрибута "href"? И определенно это работа для парсера HTML, а не регулярное выражение. –
Что-то вроде этого .var t = Regex.Match (вход, @ "href = yourword"), у вас есть googled! – Arash