Regex для атрибута стиля html - PullRequest
2 голосов
/ 16 февраля 2010

Попытка получить регулярное выражение для получения значения атрибута стиля из приведенного ниже примера должна объяснить мою проблему.

источник: размер шрифта: 11pt; цвет шрифта: красный; выравнивание текста: слева;

хочу сказать, дай мне ..

  1. размер шрифта и возвращает 11pt
  2. font-color и возвращает красный
  3. выравнивание текста и возврат влево

Может ли кто-нибудь указать мне правильное направление

Спасибо

Lee

Ответы [ 3 ]

3 голосов
/ 16 февраля 2010

Этот вопрос напомнил мне сообщение в блоге Джеффа Этвуда, Разбор HTML-кода Путь Ктулху . Это не совсем тот же вопрос, но это то же самое чувство. Не разбирайте CSS с помощью регулярных выражений! Есть множество библиотек, чтобы сделать это для вас.

0 голосов
/ 16 февраля 2010
var regex = new Regex(@"([\w-]+)\s*:\s*([^;]+)");
var match = regex.Match("font-size:11pt;font-color:red;text-align:left;");
while (match.Success)
{
    var key = match.Groups[1].Value;
    var value = match.Groups[2].Value;
    Console.WriteLine("{0} : {1}", key, value);
    match = match.NextMatch();
}

Редактировать: Это не должно быть "полное" решение. Это, вероятно, делает работу в 80% случаев, и, как всегда, последние 20% будут на несколько дороже; -)

0 голосов
/ 16 февраля 2010

По логике вы бы хотели:

[точная фраза] + 1 двоеточие + 0 или более пробелов + 0 или более символов до первой точки с запятой или закрывающей кавычки.

Я думаю, это направит вас в правильном направлении:

font-size[:][\s]*[^;'"]*

Gotchas:

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

  • все это зависит от того, какие стили не написаны от руки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...