Регулярки в Golang, получение стянутых данных посредствам парсера
в коде ниже приведен пример того, как я вытаскиваю из тега ссылку на фильм.
func (movie Movie) GettingData() {
document := GetMarkupDoc(settings.IviAddress + "movies")
link, _ := document.Find(".nbl-slimPosterBlock").First().Attr("href")
fmt.Println(link)
Вовзращает:
C:\Go\src\Caretaker\processing>processing.exe
/watch/437652
Мне нужно получить то, что идет после последнего символа /, то есть 437652. Я пробовал воспользоваться regexp, но как то не нашел способа обрезать строку регулярным выражением до того, что мне нужно. Так же вот:
image, _ := document.Find(".image").First().Attr("style")
Здесь парсится путь к изображению из атрибута стайл. На выходе:
background-image: url(https://адрес);
Подскажите, пожалуйста, какой библиотекой воспользоваться и как вытащить эти злополучные данные?
Ответы (2 шт):
Если эти данные относительно «скучные» и однообразные, как в вашем случае, то регулярные выражения не особо нужны:
const link = `/watch/1234`
fmt.Println(path.Base(link))
// Output:
//
// 1234
const style = `background-image: url(https://example.com/img.png);`
fmt.Println(strings.TrimPrefix(strings.TrimSuffix(style, `);`), `background-image: url(`))
// Output:
//
// https://example.com/img.png
Второе можно оптимизировать, но это оставлено в качестве домашнего задания :-) .
Если же данные более изощрённые, особенно в CSS, вам понадобится как минимум токенайзер CSS, а как максимум — парсер.