我正在对字符串进行正则表达式以找到某种模式:
fileName = '123456_BI12554_AA_0021.jpg'
id = re.findall(r'(_BI\d{5}_)', fileName)
找到_BI12554_
,但有时会有6位数,而不仅仅是5位。
有没有办法找到_BI
和_
之间的所有数字,无论有多少数字?
答案 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)