#vb.net #string #search
#vb.net #строка #Поиск
Вопрос:
Я ищу способ поиска в этой строке информации.
<a href="CLSID/70545-GoogleToolbar_32_dll.html">Google Side Bar</a></td><td>GoogleToolbar_32.dll</td>
Я могу выполнить поиск по ключевому слову
<td>GoogleToolbar_32.dll</td>
Оттуда мне нужно получить фразу «CLSID/70545-GoogleToolbar_32_dll.html «. Моя идея состояла в том, чтобы выполнить поиск в обратном направлении, чтобы найти следующий встречающийся «a href», искать до конечной кавычки. Но я просто не могу понять, как это сделать.
Комментарии:
1. Похоже, вы пытаетесь разобрать HTML. Взгляните на CsQuery .
Ответ №1:
Если это одноразовая вещь или вы знаете, что форматирование будет последовательным, вы могли бы использовать регулярное выражение. Приведенный ниже пример выполнит то, что вы просили. Это не особенно надежно, но для вашего примера сработает. Регулярные выражения — это не то, что вы хотите использовать для синтаксического анализа языков разметки в целом. Как сказал Neolisk, вы можете захотеть заглянуть в библиотеку синтаксического анализа.
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim html As String = "<html><body><table><tr><td><a href=""CLSID/70545-GoogleToolbar_32_dll.html"">Google Side Bar</a></td><td>GoogleToolbar_32.dll</td></tr></table></body></html>"
Debug.WriteLine(GetClsId(html))
End Sub
Function GetClsId(html As String) As String
Const rx As String = "<a href=""(?<clsid>.*)"">.*<td>GoogleToolbar_32.dll</td>"
Dim m As Match
m = Regex.Match(html, rx)
If m.Success Then
Return m.Groups.Item("clsid").Value
Else
Return Nothing
End If
End Function
End Module