在python中使用正则表达式,找到一系列长度

时间:2018-02-12 15:44:27

标签: python regex

我正在对字符串进行正则表达式以找到某种模式:

fileName = '123456_BI12554_AA_0021.jpg'
id = re.findall(r'(_BI\d{5}_)', fileName)

找到_BI12554_,但有时会有6位数,而不仅仅是5位。

有没有办法找到_BI_之间的所有数字,无论有多少数字?

4 个答案:

答案 0 :(得分:6)

当然可以:您可以使用+表示" 1或更多"位数。

re.findall(r'(_BI\d+_)', fileName)

答案 1 :(得分:3)

如果你知道它要么是5或6,你可以对你的模式稍作修改以允许这样做:

\d{5,6}

此处符号{{1}}表示5到6位数之间的匹配(包括)。

答案 2 :(得分:2)

您只需使用\d+检查一个或多个数字。

例如:

>>> re.findall(r'(_BI\d+_)', '123456_BI12554_AA_0021.jpg')
['_BI12554_']
>>> re.findall(r'(_BI\d+_)', '123456_BI125548487387378378_AA_0021.jpg')
['_BI125548487387378378_']
>>> re.findall(r'(_BI\d+_)', '123456_BI1_AA_0021.jpg')
['_BI1_']

答案 3 :(得分:2)

您可以使用正面的后置(?<=:然后使用一个或多个数字\d+

(?<=_BI)\d+

这将为您提供_BI和_之间的所有数字。

使用_BI\d+__BI中选择一个或多个数字\d+以及下一个下划线_