Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
usuf
3 / 3 / 0
Регистрация: 21.02.2011
Сообщений: 78
#1

Регулярное выражение для поиска определенных ссылок

25.06.2012, 18:03. Просмотров 1496. Ответов 2
Метки нет (Все метки)

для примера имеется следующий текст:
HTML5
1
2
3
4
5
6
<meta name="msapplication-task" content="name=Homepage;action-uri=http://www.nytimes.com?src=iepin&amp;adxnnl=1;icon-uri=http://css.nyt.com/images/icons/homepage.ico" />
<link rel="shortcut icon" href="http://css.nyt.com/images/icons/nyt.ico" />
[B]<link rel="alternate" type="application/rss+xml" title="RSS" href="http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml">[/B]
<link rel="alternate" media="handheld" href="http://mobile.nytimes.com">    
<link rel="stylesheet" type="text/css" href="http://css.nyt.com/css/0.1/screen/build/homepage/styles.css?v=20120119">
<link rel="stylesheet" type="text/css" media="print" href="http://css.nyt.com/css/0.1/print/styles.css">
имеем регулярное выражение:
<link[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>

имеется следующий код:
C#
1
2
3
4
5
6
7
 string regexImgSrc = @"<link[^>]*?href\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>";
                         MatchCollection matchesImgSrc = Regex.Matches(new StreamReader(stream).ReadToEnd(), regexImgSrc, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                         foreach (Match m in matchesImgSrc)
                         {
                             string imgUrl = m.Groups[1].Value;
                         }
                     }
он возвращает все линки а мне нужно добавить фильтр чтобы брало только с type="application/rss+xml"
поиски в интернете и собственные усилия не дали результатов..((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2012, 18:03
Ответы с готовыми решениями:

Регулярное выражение для поиска слова
У меня есть файл, содержащий строки с текстом: Предложение номер один...

Регулярное выражение для поиска ссылки *.html
есть такое регулярное выражение для поиска ссылки &quot;http://()+()?&quot; мне нужно...

Регулярное выражение, для поиска файлов по расширению
Собственно есть список файлов. Среди них есть файлы следующие файлы:...

Регулярное выражение для поиска email адреса
Здравствуйте дорогие форумчане!)) Составил регулярное выражение, но оно...

Написать регулярное выражение для поиска парных скобок
помогите написать регулярное выражение для поиска парных скобок

2
Петррр
6156 / 3456 / 896
Регистрация: 28.10.2010
Сообщений: 5,926
26.06.2012, 00:09 #2
Так как я в регулярных выражениях не разбираюсь, могу предложить следующий вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Linq;
using HtmlAgilityPack;
 
class Program
{
    static void Main(string[] args)
    {
        string html = "<meta name=\"msapplication-task\" content=\"name=Homepage;action-uri=http://www.nytimes.com?src=iepin&amp;adxnnl=1;icon-uri=http://css.nyt.com/images/icons/homepage.ico\" />" + 
                      "<link rel=\"shortcut icon\" href=\"http://css.nyt.com/images/icons/nyt.ico\" />" +
                      "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml\">" + 
                      "<link rel=\"alternate\" media=\"handheld\" href=\"http://mobile.nytimes.com\">    " + 
                      "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://css.nyt.com/css/0.1/screen/build/homepage/styles.css?v=20120119\">" +
                      "<link rel=\"stylesheet\" type=\"text/css\" media=\"print\" href=\"http://css.nyt.com/css/0.1/print/styles.css\">  ";
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);
        var links = doc.DocumentNode
            .Descendants()
            .Where(x => x.Attributes.Contains("type") && x.Attributes["type"].Value == "application/rss+xml");
        foreach (var link in links)
            if (link.Attributes.Contains("href"))
                Console.WriteLine(link.Attributes["href"].Value);
        Console.ReadKey(true);
 
    }
}
0
Yukikaze
341 / 320 / 48
Регистрация: 12.12.2011
Сообщений: 563
26.06.2012, 15:16 #3
Можно используя XPath
Код
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var links = doc.DocumentNode
var nodes = links.SelectNodes("//link[@type='application/rss+xml'])";
foreach(var node in nodes)
   Console.WriteLine(node.Attributes["href"].Value);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2012, 15:16

Необходимо составить регулярное выражение для поиска чисел в формулах
Помогите составить регулярное выражение,думаю знающим людям будет не сложно это...

Подскажите регулярное выражение для поиска только вопросительных предложений в тексте
Здравствуйте. Кому не сложно подскажите регулярное выражение для поиска только...

Регулярное выражение для поиска определённых файлов и копирование их в другую директорию
Здраствуйте! Столкнулся с регулярными выражениями. Но такое дело что в них...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru