Как использовать регулярное выражение для поиска чисел до или после «/»

#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