python正则表达式与重复子模式

时间:2013-10-17 11:45:41

标签: python regex python-2.7

我想知道是否有一种'智能'方式(一个正则表达式)从以下段落中提取ID:

...
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif';
...

结果应该是包含12600891260090的列表。 ID的数量可能最多为10个。

我需要类似的东西:

re.findall('imgList = (some expression)', string)

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

最好是使用单个正则表达式查找所有数字。我呼吁re.findall

>>> imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
>>> import re
>>> re.findall('optimized/([0-9]*)_fpx', imgList)
['1260089', '1260090']

你当然可以强化正则表达式,但如果数据符合你的指示,那就足够了。

答案 1 :(得分:0)

import re

s = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'

print(re.findall(r'(\d+)_fpx.tif', s))

答案 2 :(得分:0)

如果未确保optimzed/_fpx部分且ID在7到10位之间 你可以做点什么

import re
re.findall('[\d]{7,10}', imgList)

这将在字符串中找到7到10位数字,因此,将排除0-6或10位以上的ID。

答案 3 :(得分:0)

import re
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
re.findall(r'([0-9]){7}',imgList)

['1260089', '1260090']

代码只能满足您的情况。