python中的正则表达式:将数字匹配为变量

时间:2018-10-15 02:54:27

标签: python regex python-3.x

我想使用“ re”库将字符串与我需要的字符串匹配。

例如,我有一个如下所示的for循环,我想根据循环号找到它们结束的文件:

for ind in range(10):
    file_name = re.match(r'^abc.*\.\d{ind}', s)

但是我认为这不是正确的方法,因为ind是变量?

例如,因此,我想找到这些文件:

> ind==1 -> abc1     ind==2 -> abc2       ind==3 -> abc3

如果您告诉我编写这部分代码的正确方法,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

(已编辑)

在字符串中放置变量名不会自动为您替换该值。您要做的是format一个字符串。

for ind in range(10):
    file_name = re.match(r'^abc.*\.{}'.format(ind), s)

如果这有点令人困惑,您还可以使用旧语法

re.match(r'^abc.*\.%d' % ind, s)

答案 1 :(得分:0)

请尝试:

r'^abc.*[' + str(ind) + r']'

您使用的令牌不正确。 {x}的意思是将前面的模式重复x次。因此,\d{ind}基本上表示您的文件将以ind个数字结尾而不是数字本身。

[ind]是您所需要的。

答案 2 :(得分:0)

在python36或更高版本上尝试此代码

for ind in range(10):
    print(f'^abc.*\.\d{ {ind} }')