Регулярное выражение Python - выбор значения на основе шаблонов - PullRequest
3 голосов
/ 09 декабря 2011

Я очистил веб-страницу с помощью Scrapy и мне нужно извлечь фоновый цвет из определенных объектов.Поскольку inline-css не является частью DOM, или, как я уже прочитал, мне нужно создать регулярное выражение, которое увеличит мой текущий XPath и выберет нужное значение в атрибуте стиля объекта.Мой текущий XPath возвращает полное значение стиля следующим образом:

фон: # 80FF00; высота: 48px; ширина: 98px; цвет: # FFFFFF

Мне нужно регулярное выражениеэто выберет только фоновое шестнадцатеричное значение (то есть: # 80FF00).Мне не нужно проверять правильность форматирования значения (например, ([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}))\b), просто нужно перехватить все, что находится между 'background:' и следующим ';' .

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

1 Ответ

3 голосов
/ 09 декабря 2011

Следующее регулярное выражение должно делать то, что вы хотите, материал, который вы хотите получить, будет в первой группе захвата:

background:(.*?);

В Python

background = re.search(r'background:(.*?);', some_string).group(1)

. соответствует любому символу, * означает повторение предыдущего элемента любое количество раз, а ? делает его ленивым, поэтому он будет соответствовать как можно меньшему числу символов. Это необходимо, чтобы убедиться, что он не захватывает несколько точек с запятой и останавливается только на последней. Альтернативой может быть background:([^;]*), так как [^;] будет соответствовать только не точкам с запятой.

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