2016-02-05 1 views
-1

Мой вопрос: у меня есть программа, которая извлекает весь исходный код указанного URL. Исходный код будет сохранен в переменной.Как извлечь URL из источника HTML в vb.net

Часть исходного кода выглядит следующим образом:

"thumbnail_src":"https:\/\/scontent-fra3-1.blablabla.com\/t51.2885-15\/s640x640\/sh0.08\/e35\/1234567_984778981596410_1107218704_n.jpg","is_video":false, 

Код имеет довольно кучу этих URL-адресов. Я хочу, чтобы мой код искал часть "thumbnail_src":" в качестве маркера для начала процесса извлечения и прекратил извлечение в ","is_video":

Это должно быть очевидно сделано в цикле до тех пор, пока все URL-адреса не будут извлечены и не сохранены в листинге.

Как я могу это достичь?

+0

Глядя на ваши строки: 'https: \/\/scontent-fra3-1.blablabla.com \/t51. 2885-15 \/s640x640 \ /sh0.08 \/e35 \/1234567_984778981596410_1107218704_n.jpg, который не похож на действительный URL-адрес ... Это было для показа? – Codexer

+0

Как насчет этого регулярного выражения: ** "thumbnail_src": "(. *)", "** – Codexer

+0

Вы можете увидеть его ** https: //regex101.com/r/hK0xH8/4** там ... – Codexer

ответ

-2

В свете вашего недавнего изменения я собираюсь повторить этот ответ.

Поскольку это похоже на то, что все идет на одной строке текста, вот как бы я справился с этим.

Dim LargetxtLine as String = TheVeryLargylineofText 
Dim CommaSplit as String() = LargetxtLine.split(","c) 
Dim URLList as New List(of String) 
Dim RG as New Regex("\"":\""(.*)\""") 

For Each str as String in CommaSplit 
    If str.contains("thumbnail_src") Then 
      URLList.Add(RG.Match(str).value) 
    End If 
Next 

Это разобьет длинную строку текста в управлении части, а затем он использует регулярное выражение, чтобы добавить его в список URL-адреса (URLList)

Оттуда вы можете делать что угодно со списком (из строки).

Существует еще один способ сделать это без расщепления от 's

если вы используете этот Regex

"thumbnail_src\"":\""(.*?)\"",\""is_video" 

Складывая „?“ там превращается в жадное утверждение, означающее, что оно остановится при первом возникновении.

После этого вы можете создать URLList как этот

DIM RG as New Regex("thumbnail_src\"":\""(.*?)\"",\""is_video") 
Dim URLList as MatchCollection = RG.Matches(reallybigString) 

Это действительно личное предпочтение

+0

Вы протестировали это «Регулярное» случайно? Если вы это сделали, это не сработает при обнаружении нескольких вхождений ... Также в вашем примере вы основываете его на небольшой строке, у него может быть еще много ... И этот код не будет компилироваться, посмотрите на свою строку 'декларация ** и ** декларация RG ... – Codexer

+0

Регулярное компиляция https://regex101.com/r/tE6xZ9/1 .... В коде вам нужно использовать double, так что VS распознает его как string – Nefariis

+0

Не сказал, что 'Regex' не будет компилироваться, я говорю о коде. Также вставьте пример строки несколько раз и посмотрите, как это работает,' Regex', который вы опубликовали, не будет работать для нескольких экземпляров, как я сказал выше ... – Codexer

0

Я пытаюсь получить, что Regexp в мой исходный код. Тот, который написал codexer, что правильно, но я получаю eerrors в visual basic net.

 Dim regex As Regex = New Regex("thumbnail_src""": """(.*)""","""is_video") 
    Dim match As Match = regex.Match(sourceString) 

    If match.Success Then 
     Console.WriteLine(match.Value) 
    End If 

Я попробовал это way..and также таким образом:

Dim regex As Regex = New Regex("thumbnail_src":"(.*)","is_video") 

Что-то не так, как я вхожу код регулярного выражения.

Вот правильный один мне нужно реализовать:

https://regex101.com/r/hK0xH8/4

thumbnail_src":"(.*)","is_video 
+0

У вас слишком много "" ".... Dim RG как новое Regex (" thumbnail_src "": (. *), "" Is_video ") – Nefariis

+0

На самом деле, чтобы остановиться с путаницей - вместо этого используйте escape-символы ..." thumbnail_src \ ": (. *), \" is_video " – Nefariis

+0

Спасибо! Теперь проблема с регулярным выражением состоит в том, что он получает мне только одно BIG-соединение вместо нескольких ссылок. Я могу показать проблему здесь: https: // regex101.com/r/cI6cZ9/2 –

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