Найти - Пользователи
Полная версия: Проверка зависимостей пакетов через регулярные выражения
Начало » Python для новичков » Проверка зависимостей пакетов через регулярные выражения
1
Alhir
Доброго времени суток. Есть список установленных в системе пакетов. Есть зависимость вида: atk >= 1.23.5-i486-1, где atk - имя, 1.23.5 - версия, i486 - архитектура, под которую собран пакет, 1 - номер сборки. Необходимо определить, удовлетворена ли эта зависимость. На данный момент проблема решена поиском в системе пакета с указанным именем и сравнением его версии, архитектуры и т.д. с аналогичными аттрибутами, взятыми из зависимости. Т.е. этой зависимости будет удовлетворять пакет atk-1.23.5-i486-1 или atk-1.23.6-i486-1, а вот atk-1.22.5-i486-1 - уже не будет. Всё это занимает приблизительно 20-30 строк кода. Но есть смутное подозрение, что это можно реализовать через регулярное выражение, и соответственно 20-30 строк ужмутся до 2-3. Вот только никак не могу представить регулярное выражение, которое позволяло бы провести такую проверку. Можно ли впринципе решить поставленную задачу регулярным выражением и если да, то какой вид это выражение будет иметь?
Ferroman
Проверку на “больше/меньше” регекспом не сделаешь. А вот разобрать версию на части, и проверить дальше - запросто.
Думаю сам регексп написать вы и сами справитесь.
pasaranax
А версия каким образом определяется, дается переменная со строкой вышеуказанного вида?
o7412369815963
можно вот что-то типа такого
def test(t,m):
a,b = t.split('-'),m.split('-')
for i in xrange(len(b)):
if a[i]<b[i]: return 'no'
return 'yes'

# test , minimal
print test("1.23.5-i486-1","1.23.5-i486-1")
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB