2015-09-03 4 views
-6

Как найти href атрибуты, которые содержат определенное слово?C# Regex- найти href со специфическим словом в строке

Я попытался

"href=([?;.:=%-\/\\\'\"]+[a-zA-Z]*[blablabla][?;.:=%-\/\\\'\"]+[a-zA-Z]*$)" 

Однако, это ничего не найдено.

Спасибо.

+0

человек .. просто сделайте это самостоятельно .. https://regex101.com/ –

+0

Что вы пробовали? Пожалуйста, опубликуйте. А что касается *, включает в себя определенное слово внутри строки *: какую строку вы имеете в виду? Значение атрибута "href"? И определенно это работа для парсера HTML, а не регулярное выражение. –

+0

Что-то вроде этого .var t = Regex.Match (вход, @ "href = yourword"), у вас есть googled! – Arash

ответ

3

Настоятельно советую не использовать 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.

Смежные вопросы