#python #regex
#python #регулярное выражение
Вопрос:
У меня есть разные продукты, есть 4 разных способа их представления.
1/ABC12345
ABB122456
ABD1236/1
1/AEC1256/2
Число слева — это версия выпуска, а число справа — версия конфигурации. Всякий раз, когда эта информация доступна, я хочу ее сохранить.
Итак, для первой строки я думаю, что мог бы сделать что-то вроде
[rel_version,config_ver] = re.search(....,prod_no)
которое должно возвращать
rel_version = 1 and config_ver = None
И в четвертой строке я хочу вернуть
rel_version = 1, config_ver = 2
Как бы мне написать правильную формулу поиска для этого? Может быть, re.split (…) также может работать? Спасибо за помощь.
Ответ №1:
Попробуйте это:
product = "1/AEC1256/2"
match = re.match("([0-9]*)/?([A-Z] [0-9] )/?([0-9]*)", product)
rel_version, product_code, config_ver = match[1], match[2], match[3]
Чтобы объяснить:
([0-9]*)
будет соответствовать нулю или более цифр в начале в виде захваченной группы/?
будет соответствовать необязательному/
([A-Z] [0-9] )
будет соответствоватьABC12345
в середине- еще
/?
и([0-9]*)
для цифр в конце
Это приведет к получению версий в виде строк — для синтаксического анализа вы можете вызвать int
:
rel_version = int(rel_version) if rel_version != "" else None