Найти значение hrefs в строке - PullRequest
0 голосов
/ 27 октября 2019

Как получить все URL-адреса из всех ссылок Я не хочу использовать HTML Agility Pack или аналогичный - должен быть чистый код и очень короткий.

        HttpClient client = new HttpClient();
        static async Task Main(string[] args)
        {
            Program program = new Program();
            await program.GetTodoItems();
            await program.Function();
            Console.WriteLine("Hello Word!");
        }

        private async Task GetTodoItems()
        {
            string ResponseHtml = await client.GetStringAsync("https://example.com");

            var LinkParser = new Regex(@"\b(?:https?://|www\.)\S+\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            foreach (Match m in LinkParser.Matches(ResponseHtml))
            {
                Console.WriteLine(m.Value);
            }
        }

Я ожидаю, что чистые URL-адреса не удваиваются и только для веб-сайтане для скриптов. Этот код показывает мне некоторую ссылку с дополнительными тегами и символами вроде этой:

https://example.com/libs/jquery/1.11.2/jquery.min.js">

https://www.google -analytics.com / analytics.js ','га

1 Ответ

1 голос
/ 27 октября 2019

Расширить группу захвата вокруг "одного или нескольких не пропусков"

LinkParser = new Regex(@"\b(?<url>https?://\S+)['""]", RegexOptions.Compiled | RegexOptions.IgnoreCase);

Затем получить доступ к коллекции совпадений с помощью

m.Groups["url"].Value

Более простой шаблон также может хорошо работать: \b(?<url>http.*?)['"]

Это очень примитивно, и я не гарантирую, что это работает во всех случаях. Если у вас есть URL-адреса, которые вообще не заключаются в кавычки, рассмотрите возможность добавления пробелов и закрытия угловых скобок для конечного класса. Вам было бы лучше использовать надежную библиотеку для этого , потому что ...


Как бы то ни было, то, как вы пишете, выглядит как придурок, который думаетлюди здесь должны вам одолжение. Если вам трудно узнать, является ли ваш тон враждебным / враждебным, я считаю, что grammarly.com может помочь, но основной тест будет подумать «что я собираюсь сказать, скажу ли я это кому-то, на кого я надеялся сделатьхорошее впечатление, как у нового босса, нового романтического партнера и т. д.

Я искренне надеюсь, что у вас есть большой опыт помощи и получения помощи от SO, но вам нужно будет принять больше «поймать больше пчел»с мёдом, чем с уксусом "подход к тому, чтобы выработать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...