Помогите удалить и заменить часть ссылки на картинку

  • Автор темы Автор темы kuzenstudio
  • Дата начала Дата начала

kuzenstudio

Client
Регистрация
26.06.2010
Сообщения
139
Реакции
29
Баллы
28
Добрый всем, помогите пожалуйста решить мою проблему.
Спарил статью в переменную, в ней есть url картинок, как мне их исправить на то что мне нужно.
Есть:
<img loading="lazy" src="https://сайт.ru/может меняться/может меняться/может меняться/может меняться/может меняться.png или jpg" удалить хвост">
Нужно получить:
<img loading="lazy" src="images/02-shema-podklyucheniya-puskatelya-1.jpg или png " />
Заранее спасибо !
 
Спарил статью в переменную, в ней есть url картинок, как мне их исправить на то что мне нужно.

Берете из списка, к примеру, нужный урл картинки для замены и по наращиваемому от 0 счетчику в переменной num производите замену в цикле. Если картинка в статье одна, то счетчик и цикл не нужен.

Регулярка:
Развернуть Свернуть Копировать
(?<=<img\ loading="lazy"\ src=").*?(?=">)

64860
 
  • Оценить
Реакции: kuzenstudio
Добрый, спасибо большое что помогаете. Но берется вся ссылка и хвост, а мне как я понял нужно только имя файла.
Снимок.PNG
 
Добрый, спасибо большое что помогаете. Но берется вся ссылка и хвост, а мне как я понял нужно только имя файла.Посмотреть вложение 64981
Попробуйте такую регулярку:
Регулярка:
Развернуть Свернуть Копировать
(?<=<img\ loading="lazy"\ src=")*([^/]+)(?=">)
 
  • Оценить
Реакции: kuzenstudio
Замена всех на 1 ссылку:
Развернуть Свернуть Копировать
string html_in = project.Variables["in"].Value; // Входящий HTML
string template = project.Variables["temp"].Value; // Пример что должно получиться
string html_out = project.Variables["out"].Value; // Сюда сохраняем
string img_url = project.Variables["url"].Value; // На что меняем

string pattern_src = @"(?<=src="").*?(?="")"; // Ищем ссылку
string pattern_img = @"<img[\w\W]*?>"; // Ищем картинку
string pattern_contains = @"loading=""lazy"""; // Ищем loading="lazy"

string[] all_img = Regex.Matches(html_in, pattern_img).Cast<Match>().Select(s => s.Value).ToArray(); // Берем все картинки
all_img = all_img.Where(x => !string.IsNullOrEmpty(x) && x.Contains(pattern_contains)).ToArray(); // Берем все картинки у которых есть loading="lazy"

if(all_img.Length > 0) {
    for(int i=0;i<all_img.Length;i++) { // Производим замену в каждом совпадении
        string temp_img = all_img[i]; // Взяли html картинки
        string new_img = Regex.Replace(temp_img, pattern_src, img_url, RegexOptions.IgnoreCase); // Произвели замену src
        html_in = html_in.Replace(temp_img, new_img);    // произвели замену в html
    }
}

project.Variables["out"].Value = html_in; // вернули в шаблон результат
Замена ссылки только в первой картинке:
Развернуть Свернуть Копировать
string html_in = project.Variables["in"].Value; // Входящий HTML
string template = project.Variables["temp"].Value; // Пример что должно получиться
string html_out = project.Variables["out"].Value; // Сюда сохраняем
string img_url = project.Variables["url"].Value; // На что меняем

string pattern_src = @"(?<=src="").*?(?="")"; // Ищем ссылку
string pattern_img = @"<img[\w\W]*?>"; // Ищем картинку
string pattern_contains = @"loading=""lazy"""; // Ищем loading="lazy"

string[] all_img = Regex.Matches(html_in, pattern_img).Cast<Match>().Select(s => s.Value).ToArray(); // Берем все картинки
all_img = all_img.Where(x => !string.IsNullOrEmpty(x) && x.Contains(pattern_contains)).ToArray(); // Берем все картинки у которых есть loading="lazy"

if(all_img.Length > 0) {
    for(int i=0;i<all_img.Length;i++) { // Производим замену в каждом совпадении
        string temp_img = all_img[i]; // Взяли html картинки
        string new_img = Regex.Replace(temp_img, pattern_src, img_url, RegexOptions.IgnoreCase); // Произвели замену src
        html_in = html_in.Replace(temp_img, new_img);    // произвели замену в html
        break;
    }
}

project.Variables["out"].Value = html_in; // вернули в шаблон результат

Замена во всех (для которых предоставили url):
Развернуть Свернуть Копировать
string html_in = project.Variables["in"].Value; // Входящий HTML
string template = project.Variables["temp"].Value; // Пример что должно получиться
string html_out = project.Variables["out"].Value; // Сюда сохраняем
string img_url = project.Variables["url"].Value; // На что меняем

List<string> img_urls = new List<string>(); // Если нужно произвести каждую отдельно
img_urls.Add(img_url);
img_urls.Add("url 2");
img_urls.Add("url 3");

string pattern_src = @"(?<=src="").*?(?="")"; // Ищем ссылку
string pattern_img = @"<img[\w\W]*?>"; // Ищем картинку
string pattern_contains = @"loading=""lazy"""; // Ищем loading="lazy"

string[] all_img = Regex.Matches(html_in, pattern_img).Cast<Match>().Select(s => s.Value).ToArray(); // Берем все картинки
all_img = all_img.Where(x => !string.IsNullOrEmpty(x) && x.Contains(pattern_contains)).ToArray(); // Берем все картинки у которых есть loading="lazy"

if(all_img.Length > 0) {
    for(int i=0;i<all_img.Length;i++) { // Производим замену в каждом совпадении
        string temp_img = all_img[i]; // Взяли html картинки      
        if(img_urls.Count > i) {
            string new_img = Regex.Replace(temp_img, pattern_src, img_urls[i], RegexOptions.IgnoreCase); // Произвели замену src
            html_in = html_in.Replace(temp_img, new_img);    // произвели замену в html
        }
        else {
            break;
        }      
    }
}

project.Variables["out"].Value = html_in; // вернули в шаблон результат
 

Вложения

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)