如何使用正则表达式查找在“ /”之前或之后的数字

时间:2019-03-05 20:56:48

标签: python regex

我有不同的产品,有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 个答案:

答案 0 :(得分:4)

尝试一下:

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