Regex как получить url() Содержимое

71
8

Привет всем Я пытаюсь разобрать css url с регулярным выражением, но ничего не получается.

Regex cssUrls = new Regex(@"url\((?<char>['""])?(?<url>.*?)\k<char>?\)");

foreach (var item in cssUrls.Matches("@import url(pepe/global.css);"))
{
MessageBox.Show(item.ToString());
}

Вывод: url(pepe/global.css) но мне это нужно: pepe/global.css

Заранее спасибо!

спросил(а) 2020-04-04T00:12:55+03:00 6 месяцев, 3 недели назад
1
Решение
106

Возможное альтернативное решение, частично реализованное с использованием регулярных выражений и строковых манипуляций.


Regex cssUrls = new Regex(@"\(['"]?(?<url>[^)]+?)['"]?\)");

foreach (var item in cssUrls.Matches("@import url(pepe/global.css);"))
{
MessageBox.Show(item.TrimStart("(").TrimEnd(")").ToString());
}

ответил(а) 2020-04-04T00:27:43.457406+03:00 6 месяцев, 3 недели назад
42

Matches в объекте cssUrls.Matches всю строку с совпадением, поэтому item.ToString() дает полное совпадение. Вы хотите что-то вроде item.Groups["url"].Value чтобы извлечь только url названный частью совпадения.

ответил(а) 2020-04-04T00:12:55+03:00 6 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема