Как использовать регулярные выражения, чтобы найти числа до или после "/" - PullRequest
0 голосов
/ 05 марта 2019

У меня есть разные продукты, их можно представить 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 Ответ

4 голосов
/ 06 марта 2019

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...